加载中 ...

58 mysql规范

2019-07-10 16:45:54 来源:沈阳小程序开发 作者:沈阳软件开发

一,基本规格

表存储引擎必须使用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字段类型不一致而踩到坑,导致全表扫描?

理解索引软件

的最左前方的组合

ad.jpg

后缀原则,避免重复索引。如果(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,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同

其观点或证实其内容的真实性。