一、MySQL存在的问题优化器对复杂SQL支持不好对SQL标准支持不好大规模集群方案不成熟,主要指中间件ID生成器,全局自增ID异步逻辑复制,数据安全性问题Online DDLHA方案不完善备份和恢复方案还是比较复杂,需要依赖外部组件展现给用户信息过少,排查问题困难众多分支,让人 ...
一、MySQL存在的问题
优化器对复杂SQL支持不好
对SQL标准支持不好
大规模集群方案不成熟,主要指中间件
ID生成器,全局自增ID
异步逻辑复制,数据安全性问题
Online DDL
HA方案不完善
备份和恢复方案还是比较复杂,需要依赖外部组件
展现给用户信息过少,排查问题困难
众多分支,让人难以选择
通常来讲,各个互联网公司的数据库分为5个数据库环境:
dev : 开发环境, 开发可读写,可修改表结构; 常用的163的数据库表; 开发人员可以修改表结构, 可以随意修改其中的数据; 但是需要保证不影响其他开发同事
qa : 测试环境, 开发可读写, 开发人员可以通过工具修改表结构
sim: 模拟环境, 开发可读写, 通过web平台;发起上线请求时,会先在这个环境上进行预执行, 这个环境也可供部署上线演练或压力测试使用 可以读写
real: 生产数据库从库(准实时同步),只读环境,不允许修改数据,不允许修改表结构; 供线上问题查找,数据查询等使用
online: 线上环境;开发人员不允许直接在线上环境进行数据库操作,如果需要操作必须找DBA进行操作并进行相应记录
这些环境的机器,一定要做到权限划分明确,读写帐号分离,并且有辨识度,能区分具体业务。例如用户名w_wap, r_wap 能看出来,读写帐号是wap应用的
三、数据库开发规范
开发规范本身也包含几部分:基本命名和约束规范,字段设计规范,索引规范,使用规范等
规范存在意义
保证线上数据库schema规范
减少出问题概率
方便自动化管理
规范需要长期坚持,对开发和DBA是一个双赢的事情
约束规范
表字符集选择UTF8 ,如果需要存储emoj表情,需要使用UTF8mb4(MySQL 5.5.3以后支持)
存储引擎使用InnoDB
变长字符串尽量使用VARCHAR VARBINARY
不在数据库中存储图片、文件
- 设计表的时候需要添加注释
单表数据量控制在1亿以下,单表物理大小不超过10GB,行平均长度不超过8KB
禁止在线上做数据库压⼒测试
禁止从测试、开发环境直连数据库
create database test_crm default character set=utf8;
原标题:【mysql】数据库使用的一些规范
关键词:MYSQL
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。