MySQL数据库开发的 36 条军规!

来自:www.slideshare.net/mysqlops/mysql-9838563

来自一线的实战经验,主要针对DBA和后端开发人员,总是在灾难发生后,才想起容灾的重要性;总是在吃过亏后,才记得曾经有人提醒过。文末是详细的视频讲解和PDF下载。

尽量不在数据库做运算

控制单表数据量 纯INT不超过10M条,含Char不超过5M条

保持表身段苗条

平衡范式和冗余

拒绝大SQL,复杂事务,大批量任务

用好数值字段,尽量简化字段位数

把字符转化为数字

优先使用Enum或Set

避免使用Null字段

少用并拆封Text/Blob

不在数据库中存图片

索引类军规

谨慎合理添加索引

字符字段必须建立前缀索引?

不在索引列做运算

自增列或全局ID做InnoDB主键

尽量不用外键

SQL尽可能简单

保持事务连接短小

尽可能避免使用SP/Trigger/Function

尽量不用Select *

改写Or为IN()

改写Or为Union

避免负向查询和%前缀模糊查询

Count不要使用在可Null的字段上面

减少Count(*)

Limit高效分页,SELECT * FROM message WHERE id > 9527 (or sub select) limit 10

使用Union ALL 而不用Union

分解链接,保证高并发

Group By 去除排序

同数据类型的列值比较

Load Data导入数据,比Insert快20倍

打散大批量更新,尽量凌晨操作

隔离线上线下

禁止未经DBA认证的子查询

永远不在程序段显式加锁

表字符集统一使用UTF8MB4

往期干货推荐

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180615A0983Y00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券