概述
今天主要分享一下Mysql Schema優化方面的一些內容,僅供參考。
mysql schema優化建議
1、保證你的資料庫的整潔性。
2、歸檔老數據
刪除查詢中檢索或返回的多餘的行。
3、在數據上加上索引
加完索引一定要看下執行計劃
4、不要過度使用索引,評估你的查詢
因為增刪改每次都需要維護索引。
5、壓縮 text 和 blob 數據類型
主要是為了節省空間,減少從磁碟讀數據
6、UTF 8 和 UTF16 比 latin1 慢
7、有節制的使用觸發器
儘可能放在業務層面實現。
8、保持數據最小量的冗餘 — 不要複製沒必要的數據
9、使用連結表,而不是擴展行
10、注意你的數據類型,儘可能的使用最小的
主要是為了節省空間,前面應該是有介紹了根據生產環境的數據去評估數據類型長度。
11、如果其他數據需要經常需要查詢,而 blob/text 不需要,則將 blob/text 數據域其他數據分離
12、經常檢查和優化表
命令是:optimize table XXX;
13、經常做重寫 InnoDB 表的優化
實際上就是alter table xx engine=innodb;
13、有時,增加列時,先刪除索引,之後在加上索引會更快
建議DDL操作用PT工具去做。
15、為不同的需求選擇不同的存儲引擎
比較推薦用innodb引擎
16、日誌表或審計表使用ARCHIVE存儲引擎 — 寫的效率更高
建議單獨規劃一個庫來做。
17、將 session 數據存儲在 memcache 中,而不是 MySQL 中
memcache 可以設置自動過期,防止MySQL對臨時數據高成本的讀寫操作
18、如果字符串的長度是可變的,則使用VARCHAR代替CHAR
主要是節約空間,因為CHAR是固定長度,而VARCHAR不是(utf8 不受這個影響)
19、逐步對 schema 做修改
永遠保持對資料庫的敬畏,因為你不知道一個小的變化將會產生怎樣巨大的影響
20、在開發環境測試所有 schema 變動,而不是在生產環境的鏡像上去做
DDL操作一定要慎重
21、不要隨意改變你的配置文件,這可能產生非常大的影響
修改配置文件都需要在測試環境驗證後再上生產
22、有時候,少量的配置會更好
增加參數需要對該參數所帶來的後果有一定的了解。
23、質疑使用通用的MySQL配置文件
配置最好都自定義。
覺得有用的朋友多幫忙轉發哦!後面會分享更多devops和DBA方面的內容,感興趣的朋友可以關注下~