沈剑老师的MySQL军规

  • Post author:
  • Post category:mysql


MySQL军规适应的业务场景

  • 互联网前台业务
  • 数据量较大
  • 并发量较大

在适应业务场景之下,系统

  • 响应时间,吞吐量,扩展性优先
  • 数据库往往最容易成为系统瓶颈

解放数据库,降数据库磁盘IO,将数据库CPU成为架构设计的核心方向之一

如何降低数据库磁盘IO

  • 读多写少用缓存
  • 前台与后台分离架构
  • 最优质的SQL
  • 只让数据库做它擅长的事情:存储和索引,少干其它事情
  • 大对象,原则上不要存储在数据库里

如何降低数据库CPU计算

  • 数据库非必须的CPU计算,尽量挪到服务处去处理
  • 禁止使用外键约束,由服务保障完整性
  • 禁止使用存储过程,视图,触发器,event

如何降低磁盘IO+CPU计算

  • 尽量不使用join,如果要用,必须保证字符集属性类型与长度相同,并且要建立索引
  • 禁止负向查询,与%开头的模糊查询
  • 字段类型,与查询字段赋值类型必须相同
  • 禁止在列上进行函数或表达式计算
  • 字段必须定义为not null,并提供默认值
  • 联合索引,区分度最高的放在最左边
  • 联合索引,列个数不要超过5个

以上是MySQL军规的主要内容,还有部分知识点,没有列出来。这个是针对MySQL的军规,实际上在oracle、postgresql等关系型数据库中都有一定的通用性,所以记录下来。希望对看到的你有所帮助。



版权声明:本文为magi1201原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。