转自链接:https://learnku.com/articles/25148

1. 尽可能地使用 InnoDB 作为表的存储引擎

说明:在 MySQL 5.6 以后,InnoDB 被设置成默认的存储引擎,支持事务和行级锁。

2. 数据库和数据表统一使用 UTF8MB4 字符编码(有推荐使用UTF-8)

说明:UTF8MB4 字符编码支持中文储存以及表情存储,兼容性杠杠的。

3. 所有的表和字段必须添加注释

说明:这个是好习惯的问题,即使做到了顾名思义,以防万一哪天健忘或理解错误,同时给后人留下后路,提高维护性。使用 comment 设定注释。

4. 尽可能采用冷热数据分离策略

说明:在 MySQL 中,数据表列数最大限制为 4096 列 ,每条元祖数据总和大小不能超过 65535 字节,常用的字段与基本不常用的字段、细分不同业务的数据分开表设计存储,减小表宽度,保证热数据的内存缓存命中率,降低 CPU 使用率以及降低 IO 流。

5. 禁止以图片、文件等二进制数据

说明:MySQL 虽然支持对文件对象的存储,但是开发人员是不允许、不推荐这样做的。文件通常是很大的,转成二进制数据将是一串很长的字符串,无疑占用数据库很大的存储空间,在数据库读写更是消耗内存和占用大量的 IO 流,最终导致查询的效率低下。一般文件是存放于文件服务器,将文件服务器的路径存储于数据库中。

6. 禁止在线上做数据库的压力测试

7. 对应的环境使用对应的数据库比如测试环境一定要使用测试环境的数据库

8. super 权限只能属于 DBA,不能赋予项目程序

9. 养成查看 SQL 运行性能的习惯,可以借用性能分析工具

譬如:EXPLAIN 语句 | showprofile | mySQLsla 等。

10. 禁止在业务高峰期批量更新、查询数据

说明:可以在流量比较低的凌晨跑批操作。

11. 所有建表前都要确定字段的类型、长度以及索引方可建表

说明:确保表结构设计为最优是前期数据库最大的优化

12. 所有对表的结构、数据的修改务必经过 DBA 的审阅和同意