数据库命名规范
所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁用使用MySQL保留关键字如from见名识义临时表必须以tmp为前缀并以日期为后缀备份库,备份表必须比bak为前缀并以日期为后缀所有储存相同数据的列名和列类型必须一致。数据库基本设计规范
宽度不能超过
单表保持万可以用历史数据归档,分库分表来控制数据量大小建议采用物理分表的方式管理大数据尽量做到冷热数据分离,减小表的宽度减少磁盘IO,保证热数据的内存缓存命中率利用更有效的缓存,避免读入无用的冷数据禁止在表中建立预留字段禁止在数据库中存储图片,文件等二进制数据禁止在线上做数据库压力测试数据库索引设计规范
单表不要超过5个每个Innodb表必须要有一个主键where从句包含orderbygroupbydistinct多表join关联列联合索引从左到右覆盖索引避免回表外键会影响写操作性能数据库字段设计规范非负的数据用unsigned优先选择符合存储需要的最小的数据类型VARCHAR(N)代表的字符数,不是字节数使用utf8存储varchar避免使用text避免枚举尽可能notnull索引null占用更多空间比较和计算需要对null特色处理timestamp和int都是4字节,可读性更高超过timestamp就用datetime金额必须用decimal,不会丢失精度SQL开发规范
建议用预编译语句进行数据库操作,只传参数,高效,安全。避免数据类型隐式转换,会导致索引失效拆库select*消耗更多的cpu和io,无法覆盖索引join建议不超过5个MySQL最多61个in值不要超过个禁止where上计算复杂SQL拆小SQL更好地利用CPU的并行数据库操作规范超过万行的批量写操作,要分批多次进行操作大批量操作可能会造成严重的主从延迟对于达标使用pt-online-schema-change修改表结构避免大表修改产生的主从延迟避免在对表字段进行修改时进行缩表禁止为程序使用的账号赋予super权限一个账号只在一个数据库下使用(未完待续)....