Mysql使用规范文档

 

 

强制:不允许在跳板机上/生产服务器上手工业连接,查询或改进线上多少

强制:全部上线脚本必需先在测量检验意况试行,验证通过之后能够在生育条件举办。

强制:上线脚本的编码格式统生龙活虎为UTF-8

强制:访谈数据库须求运用DNS域名,不能够直接写IP

提出:DB名、表名、字段名,都小写,长度建议尽量不超过15

 

强制:建表_新建表必需含有自增主键列,主键列不应有被涂改;

强制:建表_MySQL 字符集 utf8mb4  存款和储蓄引擎innodb

强制:建表_或是必要建索引的字段,分歧意为空 NOT
NULL,其余字体内也提议为NOT NULL

强制:建表_亟需为每张表的各个字段增多字段注释(最佳是华语卡塔 尔(阿拉伯语:قطر‎

强制:建表_不允许有外键

强制:建表_区别意用enum,set,bit数据类型

强制:建表_亟待为timestamp类型钦命默许值

强制:建表_概念列名时无法包罗关键字

强制:建表_操纵单表数据量 单表不超过二零零二w,提出不超过500w;

强制:建表_千真万确分表:限定单库表数量在300以内,除今后只怕的分表以外;

强制:建表_调整列数量,字段少而精,字段数提出在20以内;

建议:建表_自增列最佳是为无符号型

建议:建表_自增列需合营不一而再再而三空洞现身的或是如1,7,15,23 

建议:建表_少用text/blob
varchar的性质会比text高超级多;实在制止不了blob,请拆表

建议:建表_不使用HINT强制行使索引

 

强制:SQL_不在数据库做运算 cpu总括必需移至业务层;

强制:SQL_剥夺跨库查询。

强制:SQL_不容许线上前后相继做DDL操作

强制:SQL_select 程序代码中不允许有SELECT * 

强制:SQL_select 程序代码中最多叁遍SELECT不容许超过5万行记录

强制:SQL_select 程序代码中单次SELECT
实行时间不能够超越5秒,建议不抢先200ms

强制:SQL_删去(delete),改换(update) 语句不一样意不加where条件

强制:SQL_去除(delete),改换(update) 语句不使用LIMIT

强制:SQL_删除(delete),退换(update) 语句对超越50万行的表
必要WHERE条件必供给用到目录

强制:SQL_删除(delete),更换(update) 语句单个影响行数无法超过5千行。

强制:SQL_删除(delete),改造(update) ,INSERT
语句在潜移暗化了5千行未来,需求SLEEP1秒手艺推行下风度翩翩组。不可能现身,不能够二十四线程

建议:SQL_驳倒3B 回绝大sql语句:big sql 谢绝大事物:big transaction
谢绝大批量:big batch

强制:SQL_大语句拆小语句,减少锁时间;一条大sql能够堵死整个库;

建议:SQL_O昂Cora改写为IN() or的频率是n品级; in的消息时log(n)品级;

建议:SQL_O瑞鹰改写为UNION,实际上更指出在前后相继中去做merge,语句尽量保障轻松。

建议:SQL_in的个数建议调节在200以内;

建议:SQL_limit高效分页limit越大,效用越低 建议用id >
$last_selected_id limit 10;

建议:SQL_使用union all替代union union有去重开垦

建议:SQL_少用连接join;不使用子查询,子查询转变为JOIN实行

建议:SQL_请使用同类型相比较,不相同门类相比较会发出类型调换,当类型调换产生在索引字段上时,将无法运用索引,很可能形成扫表的慢查询。

建议:SQL_击溃批量翻新/删除,UPDATE/DELETE一条SQL操作几十万、上百万行数据,须求拆分成小S(英文名:Elephant Dee卡塔 尔(阿拉伯语:قطر‎QL,分批次操作,减小对数据库影响。

 

强制:索引_叁个表中,最多可含蓄15个目录

强制:索引_叁个目录中,最多可含蓄5个列

强制:索引_不一致敬建重复索引,冗余索引特殊意况下同意
,但要求交给分明原因。

强制:索引_不接纳全文索引

强制:索引_长字符字段必得建前缀索引

建议:索引_目录一定不是越来越多越好(能不加就不加,要加的断定得加);

建议:索引_名字前缀为”idx_”,检查独一索引前缀是还是不是”uniq_”

Leave a Comment.