ome/img/nav3_on.png">
APP
系统平台
  • 建站知识
  • 联系我们
  • 咨询热线 :
    028-86922220

    疆括仕网站建设,新征程启航

    为企业提供网站建设、域名注册、服务器等服务

    MySQL开发规范有哪些-创新互联

    这篇文章将为大家详细讲解有关MySQL开发规范有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    霸州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

    基础规范

    • 使用innodb存储引擎

    • 表字符集使用utf-8

    • 所有表添加注释

    • 单表数据量建议控制在5000W以内

    • 不再数据库中存储图、文件等大数据

    • 禁止在线上做数据库压力测试

    • 禁止测试、开发环境直连数据库

    命名规范

    • 库名表名字段名必须有固定的命名长度,12个字符以内

    • 库名、表名、字段名禁止超过32个字符。须见名之意

    • 库名、表名、字段名禁止使用MySQL保留字

    • 临时库、表名必须以tmp为前缀,并以日期为后缀

    • 备份库、表必须以bak为前缀,并以日期为后缀

    库、表、字段开发设计规范

    • 禁止使用分区表

    • 拆分大字段和翻身顾问频率低的字段,分离冷热数据

    • 用HASH进散表,表名后缀使进制数,下标从0开始

    • 按日期时间分表需符合YYYY[MM][DD][HH]格式

    • 采用合适的分库分表策略。例如千库十表、十库百表等

    • 尽可能不适用text、blob类型

    • 用decimal代替float和double存储精确浮点数

    • 越简单越好:将字符转换为数字、使用tinyint来代替enum类型

    • 所有字段均为not null

    • 使用unsigned存储非负数

    • int类型固定占有4字节存储

    • 使用timestamp存储时间

    • 使用int unsigned存储ipv4

    • 使用varbinary存储大小写敏感的变长字符串

    • 禁止在数据库中存储明文密码,把密码加密后存储

    • 用好数值类型字段


      类型

      字节

      最小值

      较大值





      tinyint

      1

      -128

      127

      smallint

      2

      -32768

      32767

      mediumint

      3

      -8388608

      8388607

      int

      4

      -2147483648

      2147483647

      bigint

      8

      -9223372036854775808

      9223372036854775807

      如果数值字段没有那么大,就不要用bigint

    • 存储ip好用int存储而非char(15)

    • 不允许使用enum

    • 避免使用null字段

      null字段很难查询一花,null字段的索引需要额外空间,null字段的复合索引无效。

    索引规范

    • 单个表中的索引数量不超过5个

    • 单个索引中的字段数不超过5个

    • 对字符串使用前缀索引,前缀索引长度不超过8个字符

    • 建议优先考虑前缀索引,必要可添加伪列并建立索引

    • 表必须有主键

    • 不使用更新频繁的列作为主键

    • 尽量不选择字符串列作为主键

    • 不使用uuid md5 hash这些作为主键-太离散

    • 默认使非空的键作为主键

    • 建议选择自增或发号器

    • 重要的SQL必须必须被索引,比如update、delete语句的where条件列、order by、group by、distinct的字段

    • 多表join的字段注意

    1.区分度较大的字段放在前面
    2.核SQL优先考虑覆盖索引
    3.避免冗余和重复索引
    4.索引要综合评估数据密度和分布以及考虑查询和更新比例


    • 索引禁忌

    1.不在低基数列上建立索引、例如性别
    2.不在索引列记性数学运算和函数运算


    • 尽量不使用外键

    1.外键用来保护参照完整性,可以业务端实现
    2.对父表和字表的操作会互相影响,降低可用性


    • 索引命名

    1.非索引必须以 inx_字段1_字段22.索引必须以 uniq_字段1_字段2


    • 索引字段的默认值不能为空。null非常影响索引的查询效率。

    • 反复查看和表相关的SQL,符合最左前缀的特点建立索引。多条字段重复的索引,要修改语句条件字段的顺序,为其建立一条联合索引,减少索引数量。

    • 能使用索引就使用索引

    • 研发要经常使用explain,如果发现索引选择性差,必须让他们学会使用hint。

    SQL规范

    • SQL语句尽可能简单

    • 事物要简单,整个事物的时间产生过度不要太长

    • 避免使用触发器、函数、存储过程

    • 降低业务耦合度,为sacle out,sharding留有余地

    • 避免在数据库中进行数学运算,mysql不擅长数学运算和逻辑判断

    • 不要用selecy *,查询那几个字段就select那几个字段

    • sql中使用or的改写成in,or的效率没有in的效率高

    • in里面数字的个数建议1000以内

    • limit分页注意效率。limit越大,效率越低。

    • 使用union all替代union

    • 避免使大表join

    • 使用group bu分组、自动排序

    • 对数据的更新要打散后批量更新,不要一次更新太多数据

    • 减少和数据库的交互次数

    • 注意使用性能分析工具

    • SQL语句要求所有研发,SQL关键字全部大写,每个词只允许一个空格

    • SQL语句不可以出现隐式转换

    • 能不用not in就不用

    • 禁止使用前缀是%的like

    • 不使用负向查询,如 not in、not like

    • 禁止在数据库总跑大查询

    • 使预编译语句,只传参数,比传递SQL语句更高效。降低SQL注入。

    • 禁止使order by rand

    • 禁止单条SQL语句同时更新多个表

    流程规范

    • 所有的建表操作需要提前告知该表涉及的查询SQL

    • 所有的建表需要确定建立那些索引后才可以建表上线

    • 所有的改表结构、加索引操作都需要涉及到所该表的查询SQL发出来通知DBA等相关人员

    • 在新建表加字段之前,要求研发至少提前3天邮件出来,给dba门评估、优化和审核

    • 批量导入、导出数据必须提前通知DBA协助观察

    • 禁止线上从库执行后端管理和统计类查询

    • 禁止super权限的应用程序账户存在

    • 不再业务高峰期批量更新、查询数据库

    关于MySQL开发规范有哪些就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


    网站栏目:MySQL开发规范有哪些-创新互联
    标题路径:https://www.tyhkzb.com/article/dohphd.html
    在线咨询
    服务热线
    服务热线:028-86922220
    TOP