MySQL军规适应的业务场景
- 互联网前台业务
- 数据量较大
- 并发量较大
在适应业务场景之下,系统
- 响应时间,吞吐量,扩展性优先
- 数据库往往最容易成为系统瓶颈
解放数据库,降数据库磁盘IO,将数据库CPU成为架构设计的核心方向之一
如何降低数据库磁盘IO
- 读多写少用缓存
- 前台与后台分离架构
- 最优质的SQL
- 只让数据库做它擅长的事情:存储和索引,少干其它事情
- 大对象,原则上不要存储在数据库里
如何降低数据库CPU计算
- 数据库非必须的CPU计算,尽量挪到服务处去处理
- 禁止使用外键约束,由服务保障完整性
- 禁止使用存储过程,视图,触发器,event
如何降低磁盘IO+CPU计算
- 尽量不使用join,如果要用,必须保证字符集属性类型与长度相同,并且要建立索引
- 禁止负向查询,与%开头的模糊查询
- 字段类型,与查询字段赋值类型必须相同
- 禁止在列上进行函数或表达式计算
- 字段必须定义为not null,并提供默认值
- 联合索引,区分度最高的放在最左边
- 联合索引,列个数不要超过5个
以上是MySQL军规的主要内容,还有部分知识点,没有列出来。这个是针对MySQL的军规,实际上在oracle、postgresql等关系型数据库中都有一定的通用性,所以记录下来。希望对看到的你有所帮助。