1.数据库设计规范:

①数据库命名规范:
①所有数据库对象名称必须使用小写字母并用下划线分割
②所有数据库对象名称禁止使用MySQL保留关键字
③数据库对象的命名要能做到见名识意,并且最好不要超过32个字符。例如 用户表:mc_userdb
④临时表必须一tmp为前缀,时间为后缀。
⑤备份库、备份表必须以bak为前缀,日期为后缀
⑥所有存储相同数据的列名和列必须一致
②数据库基本设计规范
①所有的表必须以lnnodb存储引擎。(5.6以后的默认引擎,支持事务,行级锁,更好的恢复性,高并发下性能更好)。
②数据库和表的字符集统一使用UTF8(避免乱码问题)(UTF8字符集汉字占3个字节,ASCII码占有一个字节)。
③所有的表和字段都需要添加注释。(方便以后对数据字典的维护)。
④尽量控制单表数据量的大小,建议控制在五百万以内。(这种限制取决于存储设置和文件系统),尽量做到冷热数据分离,减小表的宽度。减少磁盘IO,保证热数据的内存缓存命中率
⑤禁止在表中建立预留字段
⑥禁止在数据库中存储图片,文件等大的二进制数据
⑦禁止在线上做数据库压力测试
⑧禁止从开发环境,测试环境直连生产环境数据库


③ 数据库索引设计规范
①限制每张表上的索引数量,建议单张表索引不超过五个
(索引并不是越多越好,可以降低也可以提高效率。禁止给表中的每一列都建立单独的索引)
②每个Innodb表必须有一个主键(不使用更新频繁的列作为主键,不使用多列主键)
③不使用UUID、MD5、HASH,字符串列作为主键(后面的主键值不一定大于前面的,增加IO操作)
④主键建议使用自增ID值
常见索引列建议:
如何选择索引列的顺序:
避免建立冗余索引和重复索引:
对于频繁查询的索引优先考虑覆盖索引:(覆盖索引:包含了所有查询字段的索引)
尽量避免使用外键:

④数据库字段设计规范:
①优先选择存储需要的最小的数据类型
②避免使用TEXT,BLOB数据类型
③避免使用ENUM数据类型
④尽可能把所有列定义为NOT NULL
⑤不建议字符串存储日期型数据
⑥使用TIMESTAMP或DATETIME类型存储时间
QI
⑦同财务相关的金额类数据,必须使用decimal类型

⑤数据库SQL开发规范
①在程序中建议使用预编译语句进行数据库操作
②数据库SQL开发中避免数据类型的隐式转换
③充分利用表上已经存在的索引
④程序连接不同的数据库使用不同的账号,禁止跨库查询
⑤禁止使用SELECT *必须使用SELECT<字段列表>查询
⑥禁止使用不含字段列表的INSERT语句
错误:
正确:
⑦禁止使用子查询,可以把子查询优化为join操作
⑧避免使用JOIN关联太多的表
⑨减少数据库的交互次数
![]()
![]()
⑩使用in代替or
⑪禁止使用order by rand()进行随机排序
⑫WHERE语句禁止对列进行函数转化和计算
⑬在明显不会有重复值是使用UNION ALL 而不是UNION
⑭拆分复杂的大SQL为多个小SQL

⑥数据库操作行为规范
①超过100万行批量写操作,要分批多次进行写操作
②对于大表使用pt-online-schema-change修改表结构
③禁止为程序使用的账号赋予super权限
④对于程序连接数据库账号,遵循权限最小原则
本文详细介绍了MySQL数据库的设计规范,包括数据库命名、存储引擎选择、字符集配置、表结构设计、索引策略及SQL编写规范等内容。








1609

被折叠的 条评论
为什么被折叠?



