58 mysql规范
一,基本规格
表存储引擎必须使用InnoDB
表字符集默认使用utf8,如有必要,使用utf8mb4
解释:
(1)一般,没有乱码风险,汉字3字节,英文1字节
(2)utf8mb4是utf8的超集,用于存储4个字节,如表情符号。
禁止使用存储过程,视图,触发器和事件
解释:
(1)对数据库性能的影响很大,互联网业务,可以使网站层和服务层不进入数据库层的东西
(2)调试,故障排除,迁移困难,可扩展性差
禁止在数据库中存储大文件,例如照片,可以将大文件存储在对象存储系统中,并将路径存储在数据库中
不允许在线环境进行在线压力测试
必须隔离测试,开发,在线数据库环境
第二,命名惯例
库名,表名,列名必须小写,以下划线分隔
解读:abc,Abc,ABC都是为自己埋葬的
库名,表名和列名必须称为名称,长度不应超过32个字符
解读:tmp,巫山谁知道这些库正在做什么
库备份必须以bak为前缀,并带有日期后缀
该库必须以-s
为后缀备用数据库必须以-ss
为后缀三,表设计规范
必须在2000年内控制单实例表的数量。
单表子表的数量必须控制在1024内。
该表必须具有主键。建议使用UNSIGNED整数作为主键
潜在坑:删除没有主键的表,如果是行模式的主从架构,库将挂起
禁止使用外键。如果要确保完整性,则应由应用程序实现
解释:外键使表彼此耦合,影响SQL性能,如更新/删除,这可能导致死锁。在高并发条件下很容易成为数据库瓶颈
建议将大字段,低访问字段拆分为单独的表进行存储,并将热数据和冷数据分开
四,色谱柱设计规范
使用tinyint/int/bigint取决于业务,它将分别占用1/4/8字节
根据业务差异使用char/varchar
解释:
(1)具有固定字段长度或近似长度的服务字段适用于char,这可以减少碎片和高查询性能
(2)适用于varchar的具有不同长度或更少业务场景的字段可以减少空间
根据业务差异使用datetime/timestamp
解释:前者占用5个字节,后者占用4个字节,存储年份使用YEAR,存储日期使用DATE,存储时间使用日期时间
该字段必须定义为NOT NULL并设置为默认值
解释:
(1)NULL列使用索引,索引统计,值更复杂,MySQL更难以优化
(2)NULL需要更多的存储空间
(3)NULL只能使用IS NULL或IS NOT NULL,并且当=/!=/in/not in
时有一个大坑使用INT UNSIGNED存储IPv4,不要使用char(15)
使用varchar(20)存储电话号码,不要使用整数
解释:
(1)涉及国家代码,可能会出现+/- /()等字符,如+86
(2)手机号码不会用于数学运算
(3)varchar可能存在模糊查询,例如'138%'
使用TINYINT而不是ENUM
解释:ENUM为DDL操作添加了新值
五,指标规范
使用uniq_ [field name]
命名唯一索引使用idx_ [field name]
命名非唯一索引建议将单表索引的数量控制在5
以内解释:
(1)Internet高并发业务,索引过多会影响写性能
(2)生成执行计划时,如果索引太多,会降低性能,可能导致MySQL无法选择最佳索引
(3)异常复杂的查询要求,您可以选择ES和其他更合适的存储方式
建议组合索引字段的数量不要超过5
解释:如果5个字段仍不能大大缩小行范围,则80%是设计问题
建议不要对经常更新的字段建立索引
没有必要进行JOIN查询。如果要执行JOIN查询,JOIN的字段必须属于同一类型并编制索引。
解释:由于JOIN字段类型不一致而踩到坑,导致全表扫描?
理解索引软件
的最左前方的组合后缀原则,避免重复索引。如果(a,b,c)成立,则相当于建立(a),(a,b),(a,b,c)
六,SQL规范
不要使用select *,只获取必要的字段
解释:
(1)选择*将增加cpu/io /内存/带宽消耗
(2)指定字段可以有效地利用索引覆盖
(3)指定字段查询,可以保证在更改表结构时对应用程序没有影响
Insert必须指定一个字段,插入T values()
解释:指定字段插入以确保在表结构更改时不会对应用程序产生影响。
隐式类型转换使索引无效,从而导致全表扫描
不要在where条件列中使用函数或表达式
解释:导致无法击中索引,全表扫描
禁止以%开头的否定查询和模糊查询
解释:导致无法击中索引,全表扫描
禁止使用大表JOIN和子查询
必须用IN覆盖同一字段上的OR,并且IN的值必须小于50
应用程序必须捕获SQL异常
解读:轻松找到在线问题
汇海 Technology是领先的综合性软件和信息服务公司,为客户提供从软件开发到营销和推广的互联网解决方案,旨在成为业界领先的全链信息技术服务提供商。公司与中国移动,平安银行,南方数字,北大青鸟,西门子等行业巨头进行了全面深入的战略合作。深入涉足汽车,金融,电子商务,农业,教育等重点行业,不断开拓全国市场,为客户提供全方位的连锁服务。优质,高效,技术服务,综合优势和行业特色。武汉哪家公司做网站?武汉哪家公司做网站?哪家公司是网站?武汉着名的网站建设公司?武汉的武汉网站生产企业有哪些?武汉网站外包?武汉有哪些可靠的软件开发公司?武汉有哪些更好的app开发,微信开发和系统开发公司?如果您有这样的需求,请联系汇海技术,财富热线:027-86633307,我们将以专业的服务态度做到每一个需要,这是我们的目标,使每一个需要到极致!
“沈阳软件公司”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与
我们联系删除或处理,客服QQ:55506560,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同
其观点或证实其内容的真实性。
热门文章
使用“扫一扫”即可将网页分享至朋友圈。
上一篇:
区块链和云计算的未来趋势
下一篇:很抱歉没有了