MySQL数据库开发的三十六条军规

菜鸟要飞 | | 访问(86)

  本文为系列文章,主要介绍36条来自一线的MySQL数据库开发实战经验,每一条经验背后都是血淋林的教训,若有一条让你有所受益,本文的目的就达到了。

  本文将36条军规做了如下分类:

  一.核心军规(5)

  二.字段类军规(6)

  三.索引类军规(5)

  四.SQL类军规(15)

  五.约定类军规(5)

  为了避免收藏不看,让大家更有耐心看下去,印象更深刻些,小编将按以上分类分5次分别发布这些内容,本文是其中的第1篇,首先介绍核心军规:

  1、尽量不在数据库做运算

  • 别让脚趾头想事情

  • 那是脑瓜子的职责

  • 让数据库多做她擅长的事:

  √ 尽量不在数据库做运算

  √ 复杂运算移到程序端CPU

  √ 尽可能简单应用MySQL

  • 反例: md5() / Order by Rand()

  2、控制单表数据量

  • 一年内的单表数据量预估

  √ 纯INT不超1000W

  √ 含CHAR不超500W

  • 合理分表不超载,可以按以下字段

  USERID

  DATE

  AREA

  ….

  • 建议单库不超过300-400个表

  3、保持表身段苗条

  • 表字段数少而精,好处如下

  √ IO高效

  √全表遍历

  √表修复快

  √提高幵发

  √alter table快

  • 单表多少字段合适?见下文

  • 单表1G体积 500W行评估

  √ 顺序读1G文件需N秒

  √ 单行不超过200Byte

  √ 单表不超50个纯INT字段

  √ 单表不超20个CHAR(10)字段

  • 单表字段数上限控制在20~50个

  平衡范式不冗余

  • 平衡是门艺术

  √ 严格遵循三大范式?

  √ 效率优先、提升性能

  √ 没有绝对的对不错

  √ 适当时牺牲范式、加入冗余

  √ 但会增加代码复杂度拒绝3B

  • 数据库幵发像城市交通

  √ 非线性增长

  • 拒绝3B

  详细解析见后续文章

  核心军规小结

  • 尽量不在数据库做运算

  • 控制单表数据量

  • 保持表身段苗条

  • 平衡范式不冗余

  • 拒绝3B

  原文:今天头条-互联网技能图谱