数据库规范

数据库设计规范
所有数据库对象名称必须使用小写字母并用下划线分割
所有数据库对象名称禁止使用MySQL保留关键字(例如:from)
所有数据库对象的命名要能做到见名识义,并且最好不要超过32个字符
临时库表必须以tmp为前缀并以日期为后缀
备份库,备份表必须以bak为后缀并以日期为后缀
所有存储相同数据的列名和列类型必须一致

数据库基本设计规范
mysql5.5使用之前Myisam(默认存储引擎)情况
所有表必须使用Innodb存储引擎
    5.6 以后的默认引擎
    支持事务,行级锁,更好的恢复性,高并发下性能更好
数据库和表的字符集统一使用utf8
     统一字符集可以避免由于字符集转换产成的乱码
     mysql中utf8字符集汉字点3个字节,ASCII码占用1个字节
所有表和字段都需要添加注释
     使用comment从句添加表和列的备注
     从一开始就进行数据字典的维护
尽量控制单表数据量的大小,建议控制在500万以内
     500万并不是MySQL数据库的限制(这种限制取决于存储设置和文件系统)
      可以用历史数据归档,分库分表等手段来控制数据量大小
谨慎使用MySQL分区表
     分区表在物理上表现为多个文件,在逻辑上表现为一个表
     谨慎选择分区键,跨分区查询效率可能更低
     建议采用物理分表的方式管理大数据
尽量做到冷热数据分离,减少表的宽度
     减少磁盘IO,保证热数据的内存缓存命中率
     利用更有效的利用缓存,避免读入无用的冷数据
     经常一起使用的列放在一个表中
禁止在表中建立预留字段
     预留字段的命名很难做到见名识义
     预留字段无法确认存储的数据类型,所以无法选择合适的类型
     对预留字段类型的修改,会对表进行锁定
禁止在数据库中存储图片,文件等二进制数据
禁止在线上做数据库压力测试
禁止从开发环境,测试环境直连生产环境数据库

         索引设计规范
索引对数据库的查询性能来说是非常重要的
     不要滥用索引
限制每张表上的索引数量,建议单张表索引不超过5个
     索引并不是越多越好!索引可以提高效率同样可以降低效率
     禁止给表中的每一列都建立单独的索引
Innodb是按照哪个索引的顺序来组织表的那?
答案:主键
每个Innodb表必须有一个主键
       不使用更新频繁的列作为主键,不使用多列主键
      不使用UUID,MD5,HASH,字符串列作为主键
      主键建议选择使用自增id值
常见索引列建议
      select,update,delete语句的where从句中的列
      包含在order by,group by,distinct中的字段
      多表join的关联列
如何选择索引列的顺序
      区分度最高的列放在联合索引的最左侧
      尽量把字段长度小的列放在联合索引的最左侧
      使用最频繁的列放在联合索引的左侧
避免建立冗余索引和重复索引 
      primary key(id),index(id),unique index(id)
      index(a,b,c) ,index(a,b),index(a)
对于频繁的查询优先考虑使用覆盖索引
      避免Innode表进行索引的二次查找
      可以把随机IO变为IO加快查询效率
尽量避免使用外键
不建议使用外键约束,但一定在表与表之间的关联键上建立索引
      外键可用于保证数据的参照完整性,但建议在业务端实现
      外键会影响父表和子表的写操作从而降低性能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值