大數(shù)據(jù)服務(wù)上云的思考">大數(shù)據(jù)服務(wù)上云的思考
605
2025-04-02
數(shù)據(jù)庫命令規(guī)范
所有數(shù)據(jù)庫對象名稱必須使用小寫字母并用下劃線分割
所有數(shù)據(jù)庫對象名稱禁止使用 MySQL 保留關(guān)鍵字(如果表名中包含關(guān)鍵字查詢時,需要將其用單引號括起來)
數(shù)據(jù)庫對象的命名要能做到見名識意,并且最后不要超過 32 個字符
臨時庫表必須以 tmp_為前綴并以日期為后綴,備份表必須以 bak_為前綴并以日期 (時間戳) 為后綴
所有存儲相同數(shù)據(jù)的列名和列類型必須一致(一般作為關(guān)聯(lián)列,如果查詢時關(guān)聯(lián)列類型不一致會自動進(jìn)行數(shù)據(jù)類型隱式轉(zhuǎn)換,會造成列上的索引失效,導(dǎo)致查詢效率降低)
數(shù)據(jù)庫基本設(shè)計規(guī)范
1. 所有表必須使用 Innodb 存儲引擎
沒有特殊要求(即 Innodb 無法滿足的功能如:列存儲,存儲空間數(shù)據(jù)等)的情況下,所有表必須使用 Innodb 存儲引擎(MySQL5.5 之前默認(rèn)使用 Myisam,5.6 以后默認(rèn)的為 Innodb)。
Innodb 支持事務(wù),支持行級鎖,更好的恢復(fù)性,高并發(fā)下性能更好。
2. 數(shù)據(jù)庫和表的字符集統(tǒng)一使用 UTF8
兼容性更好,統(tǒng)一字符集可以避免由于字符集轉(zhuǎn)換產(chǎn)生的亂碼,不同的字符集進(jìn)行比較前需要進(jìn)行轉(zhuǎn)換會造成索引失效,如果數(shù)據(jù)庫中有存儲 emoji 表情的需要,字符集需要采用 utf8mb4 字符集。
3. 所有表和字段都需要添加注釋
使用 comment 從句添加表和列的備注,從一開始就進(jìn)行數(shù)據(jù)字典的維護(hù)
4. 盡量控制單表數(shù)據(jù)量的大小,建議控制在 500 萬以內(nèi)。
500 萬并不是 MySQL 數(shù)據(jù)庫的限制,過大會造成修改表結(jié)構(gòu),備份,恢復(fù)都會有很大的問題。
可以用歷史數(shù)據(jù)歸檔(應(yīng)用于日志數(shù)據(jù)),分庫分表(應(yīng)用于業(yè)務(wù)數(shù)據(jù))等手段來控制數(shù)據(jù)量大小
5. 謹(jǐn)慎使用 MySQL 分區(qū)表
分區(qū)表在物理上表現(xiàn)為多個文件,在邏輯上表現(xiàn)為一個表;
謹(jǐn)慎選擇分區(qū)鍵,跨分區(qū)查詢效率可能更低;
建議采用物理分表的方式管理大數(shù)據(jù)。
6.盡量做到冷熱數(shù)據(jù)分離,減小表的寬度
MySQL 限制每個表最多存儲 4096 列,并且每一行數(shù)據(jù)的大小不能超過 65535 字節(jié)。
減少磁盤 IO,保證熱數(shù)據(jù)的內(nèi)存緩存命中率(表越寬,把表裝載進(jìn)內(nèi)存緩沖池時所占用的內(nèi)存也就越大,也會消耗更多的 IO);
更有效的利用緩存,避免讀入無用的冷數(shù)據(jù);
經(jīng)常一起使用的列放到一個表中(避免更多的關(guān)聯(lián)操作)。
7. 禁止在表中建立預(yù)留字段
預(yù)留字段的命名很難做到見名識義。
預(yù)留字段無法確認(rèn)存儲的數(shù)據(jù)類型,所以無法選擇合適的類型。
對預(yù)留字段類型的修改,會對表進(jìn)行鎖定。
8. 禁止在數(shù)據(jù)庫中存儲圖片,文件等大的二進(jìn)制數(shù)據(jù)
通常文件很大,會短時間內(nèi)造成數(shù)據(jù)量快速增長,數(shù)據(jù)庫進(jìn)行數(shù)據(jù)庫讀取時,通常會進(jìn)行大量的隨機(jī) IO 操作,文件很大時,IO 操作很耗時。
通常存儲于文件服務(wù)器,數(shù)據(jù)庫只存儲文件地址信息
9. 禁止在線上做數(shù)據(jù)庫壓力測試
10. 禁止從開發(fā)環(huán)境,測試環(huán)境直接連接生產(chǎn)環(huán)境數(shù)據(jù)庫
MySQL 數(shù)據(jù)庫
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。