数据库优化

一、基础规范

  • 用InnoDB存储引擎
    支持事务、行级锁、并发性好、CPU和内存缓存页优化利用率高
  • 禁止使用存储过程、视图、触发器、事件
    优秀框架是“解放数据库CPU,将计算移到服务层”,若并发大,这些功能很可能将数据库拖死。在业务层,可通过加机器就加性能
  • 禁止存大文件
    不灵活、浪费资源、格式转换故效率低

二、命名规范

  • 库名、表名、字段名:小写、下划线,不超32字符,见名如意,禁止拼音英文混用
  • 表名t_xx,唯一索引uniq_xx,非唯一索引inx_xx

三、表设计规范

  • 表列数小于30
  • 必须有主键:
    1、字符串不应该做主键
    2、若没指定主键,innoDB会用唯一非空字段代替
  • 禁止用外键,若需要在业务层控制
    外键导致表表之间耦合,update、delete都会涉及相关表,影响性能,甚至死锁。

四、字段设计规范

  • 字段设置not null,且提供默认值
    1、null列使得索引、值比较更复杂,优化难
    2、null使得表有空字段,数据处理性能降低
    3、mysql对null特殊处理,需要额外空间标识
    4、null操作有限制, 不能=、in、<、<>、!=等,只能is null 或 is not null
  • 尽量不用text、blob类型:浪费内存和磁盘,影响性能
  • 避免使用小数存储货币,因为容易数据对不上,要用整型。
  • 可能模糊查询的用varchar存错,如手机号,like “136%”
  • 禁止使用ENUM,用tinyint代替
    1、enum要做DLL操作
    2、enum实际也是整型

你可能感兴趣的:(mysql,mysql)