• 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_列名缩写
        `--做到见名知意
  • 相关阅读:
    markdown自动生成侧边栏TOC /目录
    jquery和javascript的区别
    Jquery中AJAX参数详细(1)-转
    jQuery.ajax介绍
    人人开源分模块,非原生html报错,很难查找问题所在,有vue语法
    《SSH网上商城》-视频目录--代码可以跑起来
    《第16项目:国家税务协同平台项目》-视频目录
    项目:《ssh框架综合项目开发视频》-视频目录和第六天的EasyUI简单讲解
    项目:《JavaWeb图书管理系统视频》--代码修复还可以运行起来
    Maven项目在更新过程停止,再更新无效-->解决
  • 原文地址:https://www.cnblogs.com/polestar/p/5812679.html
Copyright © 2020-2023  润新知