某大公司千萬級數據庫設計解讀(一),讀完之後,大部分程序員收藏了

某大公司千萬級數據庫設計解讀(一),讀完之後,大部分程序員收藏了

併發量大、數據量大的互聯網業務

1:必須使用InnoDB存儲引擎

解讀:支持事務、行級鎖、併發性能更好、CPU及內存緩存頁優化使得資源利用率更高

2:必須使用UTF8字符集

解讀:萬國碼,無需轉碼,無亂碼風險,節省空間

3:數據表、數據字段必須加入中文註釋

解讀:N年後誰tm知道這個r1,r2,r3字段是幹嘛的

4:禁止使用存儲過程、視圖、觸發器、Event

解讀:高併發大數據的互聯網業務,架構設計思路是“解放數據庫CPU,將計算轉移到服務層”,併發量大的情況下,這些功能很可能將數據庫拖死,業務邏輯放到服務層具備更好的擴展性,能夠輕易實現“增機器就加性能”。數據庫擅長存儲與索引,CPU計算還是上移吧

5:禁止存儲大文件或者大照片

解讀:為何要讓數據庫做它不擅長的事情?大文件和照片存儲在文件系統,數據庫裡存URI多好

6:只允許使用內網域名,而不是ip連接數據庫

7:線上環境、開發環境、測試環境數據庫內網域名遵循命名規範

業務名稱:xxx

線上環境:xx.xxx.db

開發環境:xx.xxx.rdb

測試環境:xx.xxx.tdb

從庫在名稱後加-s標識,備庫在名稱後加-ss標識

線上從庫:xx.xxx-s.db

線上備庫:xx.xxx-sss.db

8:庫名、表名、字段名:小寫,下劃線風格,不超過32個字符,必須見名知意,禁止拼音英文混用

9:表名t_xxx,非唯一索引名idx_xxx,唯一索引名uniq_xxx

10:單實例表數目必須小於500

11:單表列數目必須小於30

12:表必須有主鍵,例如自增主鍵

解讀:

a)主鍵遞增,數據行寫入可以提高插入性能,可以避免page分裂,減少表碎片提升空間和內存的使用

b)主鍵要選擇較短的數據類型, Innodb引擎普通索引都會保存主鍵的值,較短的數據類型可以有效的減少索引的磁盤空間,提高索引的緩存效率

c)無主鍵的表刪除,在row模式的主從架構,會導致備庫夯住

13:禁止使用外鍵,如果有外鍵完整性約束,需要應用程序控制

解讀:外鍵會導致表與表之間耦合,update與delete操作都會涉及相關聯的表,十分影響sql 的性能,甚至會造成死鎖。高併發情況下容易造成

關注

感謝閱讀,如果這篇文章幫助了您,歡迎 點贊收藏,關注轉發 喲。您的幫助是我們前行的動力,我們會提供更多有價值的內容給大家... 謝謝!


分享到:


相關文章: