MySql 数据库基本设计规范
1、所有表必須使用Innodb存儲(chǔ)引擎
沒有特殊要求(即Innodb無(wú)法滿足的功能如:列存儲(chǔ),存儲(chǔ)空間數(shù)據(jù)等)的情況下,所有表必須使用Innodb存儲(chǔ)引擎(mysql5.5之前默認(rèn)使用Myisam,5.6以后默認(rèn)的為Innodb)Innodb 支持事務(wù),支持行級(jí)鎖,更好的恢復(fù)性,高并發(fā)下性能更好
2、數(shù)據(jù)庫(kù)和表的字符集統(tǒng)一使用utf8mb4-general-ci
兼容性更好,統(tǒng)一字符集可以避免由于字符集轉(zhuǎn)換產(chǎn)生的亂碼,不同的字符集進(jìn)行比較前需要進(jìn)行轉(zhuǎn)換會(huì)造成索引失效;utf8mb4支持emojj表情符
3、所有表和字段都需要添加注釋
使用comment從句添加表和列的備注 從一開始就進(jìn)行數(shù)據(jù)字典的維護(hù)
4、盡量控制單表數(shù)據(jù)量的大小,建議控制在500萬(wàn)以內(nèi)
500萬(wàn)并不是MySQL數(shù)據(jù)庫(kù)的限制,過(guò)大會(huì)造成修改表結(jié)構(gòu),備份,恢復(fù)都會(huì)有很大的問(wèn)題
可以用歷史數(shù)據(jù)歸檔(應(yīng)用于日志數(shù)據(jù)),分庫(kù)分表(應(yīng)用于業(yè)務(wù)數(shù)據(jù))等手段來(lái)控制數(shù)據(jù)量大小
5、謹(jǐn)慎使用MySQL分區(qū)表
分區(qū)表在物理上表現(xiàn)為多個(gè)文件,在邏輯上表現(xiàn)為一個(gè)表 謹(jǐn)慎選擇分區(qū)鍵,跨分區(qū)查詢效率可能更低 建議采用物理分表的方式管理大數(shù)據(jù)
6、盡量做到冷熱數(shù)據(jù)分離,減小表的寬度
MySQL限制每個(gè)表最多存儲(chǔ)4096列,并且每一行數(shù)據(jù)的大小不能超過(guò)65535字節(jié) 減少磁盤IO,保證熱數(shù)據(jù)的內(nèi)存緩存命中率(表越寬,把表裝載進(jìn)內(nèi)存緩沖池時(shí)所占用的內(nèi)存也就越大,也會(huì)消耗更多的IO) 更有效的利用緩存,避免讀入無(wú)用的冷數(shù)據(jù) 經(jīng)常一起使用的列放到一個(gè)表中(避免更多的關(guān)聯(lián)操作)
7、禁止在表中建立預(yù)留字段
預(yù)留字段的命名很難做到見名識(shí)義 預(yù)留字段無(wú)法確認(rèn)存儲(chǔ)的數(shù)據(jù)類型,所以無(wú)法選擇合適的類型 對(duì)預(yù)留字段類型的修改,會(huì)對(duì)表進(jìn)行鎖定
8、禁止在數(shù)據(jù)庫(kù)中存儲(chǔ)圖片,文件等大的二進(jìn)制數(shù)據(jù)
通常文件很大,會(huì)短時(shí)間內(nèi)造成數(shù)據(jù)量快速增長(zhǎng),數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)庫(kù)讀取時(shí),通常會(huì)進(jìn)行大量的隨機(jī)IO操作,文件很大時(shí),IO操作很耗時(shí) 通常存儲(chǔ)于文件服務(wù)器,數(shù)據(jù)庫(kù)只存儲(chǔ)文件地址信息
9、禁止在線上做數(shù)據(jù)庫(kù)壓力測(cè)試
10、禁止從開發(fā)環(huán)境,測(cè)試環(huán)境直接連接生成環(huán)境數(shù)據(jù)庫(kù)
總結(jié)
以上是生活随笔為你收集整理的MySql 数据库基本设计规范的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: .NetCore跨域
- 下一篇: NET问答: 如何记录 EntityFr