zoukankan      html  css  js  c++  java
  • mysql数据库开发规范

    对规范的遵守可用二八原则,不要教条。为满足实际需求 可忽视部分规范。

    1.索引规范
        *目标
         |--利用最小的索引成本找到需要的行记录
        
        *原则
         |--做前缀匹配
         |--选择区分度高的列做前缀索引列
         |--尽量使用重复索引 与where条件匹配
         |--避免重复索引
         |--索引列尽量包含 group by、order by所涉及的列
         `--查询结果比较大时 考虑索引覆盖
    
    2.SQL规范
        *原则
        |--避免大事务 减少等待和竞争
        |--不要使用* 使用具体列名
        |--遇到分页查询 使用延迟关联解决(如果有打offset,可先选取ID,然后用主键id关联)
        |--避免多表查询 避免join
        |--IN元素禁止超过300个
        |--避免%前缀做模糊查询,不走索引
        |--不要一次更新大量数据(>30000)
        |--尽量使用union或in 代替or
        |--避免使用子查询 尽量使用join
        `--不使用负向查询 not in/like  使用in 反向代替
    
    
    3.DDl规范
        *前提
        |--DDL会锁表,评估锁表给业务系统带来的影响
    
        *原则
        |--所有变更提前一天提交
        |--日常变更工作日下班后,重大变更时间沟通后确定
        |--所有DDL变更 需和研发沟通 审核后再提交
        `--所有新上线的表必须确定索引后才可上线
    
    
    4.表的设计规范
        *原则
        |--使用innodb存储引擎,表的结尾必须是Engine=innodb Auto_increment=1 Default Charset=uft8mb4
        |--表必须带有物理主键 
        |    |--id int(10) unsigned primary key not null auto_increment
        |    |--id bigint(19) unsigned primary key not null auto_increment
        |    |--int(M) M 表示最大显示宽度,和数字位数也无关系。int(3),int(8) 在磁盘上都是占用 4 btyes 的存储空间
        |    `--预估数据会无限增加的表,主键一律所以用Bigint(19) unsigned
        |--禁止使用字符做主键
        |--禁用联合主键
        |--不在数据库中存储图片 文件等大数据
        `--禁止使用分区表,定期创建分区表会给系统运维造成隐患
    
    5.列设计规范
        *原则
        |--尽量减少存储空间
        |--尽量使用数值类型+unsigned
        |--禁用blob/text字段
        |--禁用NULL值,建议在定义时都加上默认值
        |    |--NULL字段很难查询优化
        |    |--NULL字段的复合索引无效
        |    `--NULL字段的索引需要额外空间
        |--禁止使用外键
        |--使用unsigned存储非负数
        `--varchar(N) N表示的是字符数不是字节数。
            |--Mysql中一个表中所有varchar字段最大长度和是65535个字节
            `--进行排序和创建临时表时,会使用N的长度申请内存
    
    6.命名规范
        *规范
        |--库/表/列/索引名称一律小写
        |--命名不要超过32个字符
        |--索引
        |    |--格式为idx_列名缩写
        |    `--唯一索引 uniq_列名缩写
        `--做到见名知意
  • 相关阅读:
    系统优化怎么做-JVM优化之开篇
    系统优化怎么做-Tomcat优化
    系统优化怎么做-Linux系统配置优化
    系统优化怎么做-SQL优化
    系统优化怎么做-数据库优化
    系统优化怎么做-新系统上线前做什么
    系统优化怎么做-开篇
    一起学习Avalonia(一)
    etcd的应用举例
    c#总结几种正则表达式使用
  • 原文地址:https://www.cnblogs.com/polestar/p/5812679.html
Copyright © 2011-2022 走看看