Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

MySQL 规范 PDF 下载


分享到:
时间:2020-12-22 09:08来源:http://www.java1234.com 作者:转载  侵权举报
MySQL 规范 PDF 下载
失效链接处理
MySQL 规范  PDF 下载


本站整理下载:
提取码:nqar 
 
 
相关截图:
 
主要内容:


下边分为建表规约、SQL 规约、索引规约三个部分,每部分的每一条都有强制、建议两个级别,大家在参考时,根据自己公司的情况来权衡。
 
建表规约
【强制】:①存储引擎必须使用 InnoDB
解读:InnoDB 支持事物、行级锁、并发性能更好,CPU 及内存缓存页优化使得资源利用率更高。
 
【强制】:②每张表必须设置一个主键 ID,且这个主键 ID 使用自增主键(在满足需要的情况下尽量短),除非在分库分表环境下
解读:由于 InnoDB 组织数据的方式决定了需要有一个主键,而且若是这个主键 ID 是单调递增的可以有效提高插入的性能,避免过多的页分裂、减少表碎片提高空间的使用率。
而在分库分表环境下,则需要统一来分配各个表中的主键值,从而避免整个逻辑表中主键重复。
 
【强制】:③必须使用 utf8mb4 字符集
解读:在 MySQL 中的 UTF-8 并非“真正的 UTF-8”,而 utf8mb4”才是真正的“UTF-8”。
 
【强制】:④数据库表、表字段必须加入中文注释
解读:大家都别懒。
 
【强制】:⑤库名、表名、字段名均小写,下划线风格,不超过 32 个字符,必须见名知意,禁止拼音英文混用
解读:约定。
 
【强制】:⑥单表列数目必须小于 30,若超过则应该考虑将表拆分
解读:单表列数太多使得 MySQL 服务器处理 InnoDB 返回数据之间的映射成本太高。
 
【强制】:⑦禁止使用外键,如果有外键完整性约束,需要应用程序控制
解读:外键会导致表与表之间耦合,UPDATE 与 DELETE 操作都会涉及相关联的表,十分影响 SQL 的性能,甚至会造成死锁。
 
【强制】:⑧必须把字段定义为 NOT NULL 并且提供默认值
解读:
1.NULL 的列使索引/索引统计/值比较都更加复杂,对 MySQL 来说更难优化。
2.NULL 这种类型 MySQL 内部需要进行特殊处理,增加数据库处理记录的复杂性;同等条件下,表中有较多空字段的时候,数据库的处理性能会降低很多。
3.NULL 值需要更多的存储空,无论是表还是索引中每行中的 NULL 的列都需要额外的空间来标识。
 
【强制】:⑨禁用保留字,如 DESC、RANGE、MARCH 等
解读:请参考 MySQL 官方保留字。
 
【强制】:⑩如果存储的字符串长度几乎相等,使用 CHAR 定长字符串类型
解读:能够减少空间碎片,节省存储空间。


 
 
------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐