1. MySQL數據建模推薦規範:
1.1 合理使用 bigint(20) 數值類型:
類型: BIGINT
大小: 8 字節
範圍(有符號): (-9 233 372 036 854 775 808,9 223 372 036 854 775 807)
範圍(無符號): (0,18 446 744 073 709 551 615)
用途: 極大整數值
適用場景:
記錄IP值,記錄手機號,記錄×××件號,記錄其它證件號及20位以內的大數值數據。
手機號碼:11 位, 存bingint 8字節, 存varchar 12 字節
×××號:18 位, 存bingint 8字節, 存varchar 19 字節
IP字串:11-15 位,存bingint 8字節, 存varchar 12-16 字節
IP操作技巧,'58.56.161.255' 對應 976790015 使用函數轉換:
字符串轉數值: select INET_ATON('58.56.161.255');
數值轉字符串: select INET_NTOA(976790015);
1.2 字段設計的一般要求是:
a. 書寫簡潔,意義可讀,不使用屬於系統內碼保留關鍵字,必須帶準確註釋。
b. 使用小寫字母與下劃線組成。
c. 主鍵推薦用 id (identifier),用於系統內部數據與索引組織結構的唯一性標識也可用着業務數據的唯一性標識。
主鍵註釋COMMENT 中可以推薦外健用名 xxx_id。
d. 是別的表的外健使用xxx_id的方式命名,有推薦用推薦名稱,無推薦xxx可用外鍵原表名。
e. 字段類型選擇要求,業務上合理、節約存儲空間。
f. 字段不再強制要求非空,使用NULL時程序上注意相應的處理。NULL除了佔有NULL標誌位,實際存儲不佔用任何空間。
1.3 表設計的一般要求是:
a. 書寫簡潔,意義可讀,必須帶準確註釋。
b. 表名加前綴,前綴定義用系統或模塊的英文名稱縮寫。
c. 使用小寫字母與下劃線組成。
d. 引擎根據應用場景選擇,OLTP用innodb,OLAP推薦用myisam。
e. 字符集推薦使用utf8或者utf8mb4
f. 要進行容量預估,數據量大要考慮分表策略這項應該與DBA共同協商完成。
1.4 索引設計的一般要求是:
a. 索引名稱,一般索引加前綴idx_,推薦唯一索引加前綴uni_也可以統一用idx_。
b. 聯合索引名稱,推薦中間列名可以用縮寫方式以減少名稱長度,也可以用完整名字。
例如:KEY `idx_status_ae_s2_it_ae_activityflag`
對應列:(`status`,`areacode`,`sid2`,`ifaudit`,`asktime`,`activityflag`)
c.
d.
2. MySQL開發環境流程規範:
2.1 slow query 慢查詢記錄,開發完成測試時進行檢查。
long_query_time = 1
slow_query_log_file = ./slowquery.log
2.2 not using indexes 查詢未使用索引的情況,開發完成測試時進行檢查。
log_queries_not_using_indexes = 1
信息進入 slow_query_log_file 文件。