12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
ADADADADAD
mysql数据库 时间:2024-12-24 19:10:29
作者:文/会员上传
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
12-09
关于库:【强制】库的名称必须控制在32个字符以内,英文一律小写。【强制】库的名称格式:业务系统名称_子系统名,不建议使用shulan前缀。【强制】库名只能使用英文字母,数字,下划线,
以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。
tmp_
为前缀,并以日期为后缀,备份库、表以 bak_
为前缀,并以日期为后缀。【强制】表和列的名称必须控制在32个字符以内,表名只能使用字母、数字和下划线,一律小写。
【强制】表名要求模块名强相关,同一模块使用的表名尽量使用统一前缀。
【强制】创建表时必须显式指定字符集为utf8或utf8mb4。
【强制】列名尽量不用关键字(如type,order等)。
【强制】创建表时必须显式指定表存储引擎类型,如无特殊需求,一律为InnoDB。
【强制】建表必须有comment。
【强制】对于超过100W行的大表进行alter table,必须经过DBA审核,并在业务低峰期执行,多个alter需整合在一起。
因为alter table会产生表锁,期间阻塞对于该表的所有写入,对于业务可能会产生极大影响。
【建议】建表时关于主键:表必须有主键
(1)强制要求主键为id,类型为int或bigint,且为auto_increment 建议使用unsigned无符号型。
(2)标识表里每一行主体的字段不要设为主键,建议设为其他字段如user_id,order_id等,并建立unique key索引。
因为如果设为主键且主键值为随机插入,则会导致innodb内部page分裂和大量随机I/O,性能下降。
【建议】核心表(如用户表)必须有行数据的创建时间字段create_time和最后更新时间字段update_time,便于查问题。
【建议】表中所有字段尽量都是NOT NULL属性,业务可以根据需要定义DEFAULT值。
因为使用NULL值会存在每一行都会占用额外存储空间、数据迁移容易出错、聚合函数计算结果偏差等问题。
【建议】中间表用于保留中间结果集,名称必须以tmp_
开头。备份表用于备份或抓取源表快照,名称必须以bak_
开头。中间表和备份表定期清理。
【示范】一个较为规范的建表语句:
CREATE TABLE user_info (`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',`user_id` bigint(11) NOT NULL COMMENT '用户id',`username` varchar(45) NOT NULL COMMENT '真实姓名',`email` varchar(30) NOT NULL COMMENT '用户邮箱',`nickname` varchar(45) NOT NULL COMMENT '昵称',`birthday` date NOT NULL COMMENT '生日',`sex` tinyint(4) DEFAULT '0' COMMENT '性别',`short_introduce` varchar(150) DEFAULT NULL COMMENT '一句话介绍自己,最多50个汉字',`user_resume` varchar(300) NOT NULL COMMENT '用户提交的简历存放地址',`user_register_ip` int NOT NULL COMMENT '用户注册时的源ip',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',`user_review_status` tinyint NOT NULL COMMENT '用户资料审核状态,1为通过,2为审核中,3为未通过,4为还未提交审核',PRIMARY KEY (`id`),UNIQUE KEY `uniq_user_id` (`user_id`),KEY `idx_username`(`username`),KEY `idx_create_time_status`(`create_time`,`user_review_status`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='网站用户基本信息'
pk_
开头,唯一键以 uniq_
或uk_
开头,普通索引以 idx_
开头,一律使用小写格式,以字段的名称或缩写作为后缀。【建议】单个表上的索引个数不能超过8个。【建议】在建立索引时,多考虑建立联合索引,并把区分度最高的字段放在最前面。如列userid的区分度可由select count(distinct userid)计算出来。【建议】在多表join的SQL里,保证被驱动表的连接列上有索引,这样join执行效率最高。【建议】建表或加索引时,保证表里互相不存在冗余索引。11-20
11-19
11-20
11-20
11-20
11-19
11-20
11-20
11-19
11-20
11-19
11-19
11-19
11-19
11-19
11-19