Skip to content

Latest commit

 

History

History
19 lines (17 loc) · 1.81 KB

use-standard.md

File metadata and controls

19 lines (17 loc) · 1.81 KB

使用规范

以下规范仅针对互联网高并发大数据场景。

  1. 库名、表名、列名使用小写下划线风格,不超过32个字符。
  2. 表名命名规范:t_表名;非唯一索引名称:idx_索引名;唯一索引名:uniq_索引名。
  3. 单数据库实例表数量不超过500;单表列的数量不超过30。
  4. 表必须有主键,如果主键是递增的,那么还可以避免页分裂,从而提高写入性能。
  5. 列必须定义成NOT NULL并提供默认值。
    1. NULL的列使索引、索引统计、值比较都更加复杂,对MySQL来说更难优化。
    2. 针对NULL类型MySQL内部需要进行特殊处理,增加数据库处理记录的复杂性;同等条件下,表中有较多空字段的时候,数据库的处理性能会降低很多。
    3. NULL值需要更多的存储空,无论是表还是索引中每行中的NULL列都需要额外的空间来标识。
  6. 用TINYINT替代ENUM,因为增加新的ENUM值需要做DDL操作。
  7. 单表索引数量不超过5个。
  8. 不在更新频繁、区分度不高的列上建立索引。
  9. 不使用JOIN查询,大表不使用子查询。否则会产生临时表,消耗比较多的内存和CPU,影响数据库性能。
  10. 使用IN查询替换OR条件,因为旧版本的MySQL使用OR查询无法命中索引。
  11. 不使用外键,如果需要约束校验则在业务逻辑中实现。在高并发情况下使用外键容易影响数据库性能,因为更新、删除操作会涉及相关联的表,严重情况还会导致思死锁。
  12. 不使用存储过程、视图、触发器、Event:高并发大数据的互联网业务架构设计思路是:解放数据库CPU,将计算转移到服务层。这是因为计算逻辑放到服务层具备更好的扩展性,能够轻松实现通过加机器增加性能。