您好,登錄后才能下訂單哦!
tmp_
為前綴,并以日期為后綴,備份庫、表以
bak_
為前綴,并以日期為后綴。【強制】表和列的名稱必須控制在32個字符以內(nèi),表名只能使用字母、數(shù)字和下劃線,一律小寫。
【強制】表名要求模塊名強相關(guān),同一模塊使用的表名盡量使用統(tǒng)一前綴。
【強制】創(chuàng)建表時必須顯式指定字符集為utf8或utf8mb4。
【強制】列名盡量不用關(guān)鍵字(如type,order等)。
【強制】創(chuàng)建表時必須顯式指定表存儲引擎類型,如無特殊需求,一律為InnoDB。
【強制】建表必須有comment。
【強制】對于超過100W行的大表進行alter table,必須經(jīng)過DBA審核,并在業(yè)務(wù)低峰期執(zhí)行,多個alter需整合在一起。
因為alter table會產(chǎn)生表鎖,期間阻塞對于該表的所有寫入,對于業(yè)務(wù)可能會產(chǎn)生極大影響。
【建議】建表時關(guān)于主鍵:表必須有主鍵
(1)強制要求主鍵為id,類型為int或bigint,且為auto_increment 建議使用unsigned無符號型。
(2)標識表里每一行主體的字段不要設(shè)為主鍵,建議設(shè)為其他字段如user_id,order_id等,并建立unique key索引。
因為如果設(shè)為主鍵且主鍵值為隨機插入,則會導(dǎo)致innodb內(nèi)部page分裂和大量隨機I/O,性能下降。
【建議】核心表(如用戶表)必須有行數(shù)據(jù)的創(chuàng)建時間字段create_time和最后更新時間字段update_time,便于查問題。
【建議】表中所有字段盡量都是NOT NULL屬性,業(yè)務(wù)可以根據(jù)需要定義DEFAULT值。
因為使用NULL值會存在每一行都會占用額外存儲空間、數(shù)據(jù)遷移容易出錯、聚合函數(shù)計算結(jié)果偏差等問題。
【建議】中間表用于保留中間結(jié)果集,名稱必須以
tmp_
開頭。備份表用于備份或抓取源表快照,名稱必須以
bak_
開頭。中間表和備份表定期清理。
【示范】一個較為規(guī)范的建表語句:
mysql">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 '創(chuàng)建時間',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間',
`user_review_status` tinyint NOT NULL COMMENT '用戶資料審核狀態(tài),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='網(wǎng)站用戶基本信息'
pk_
開頭,唯一鍵以
uniq_
或
uk_
開頭,普通索引以
idx_
開頭,一律使用小寫格式,以字段的名稱或縮寫作為后綴。免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。