MySQL資料庫設計規範和優化建議
設計規範建議:
1).索引規範
顯式指定自增 int/bigint unsigned not null 作為主鍵
不使用外來鍵
合理利用覆蓋索引,但欄位儘量不超過5個
合理利用最左索引(字首索引/部分索引)
及時刪除冗餘索引
選擇適當的索引順序,選擇性高條件靠前
基數( Cardinality )很低的欄位不建立索引(MySQL還不支援 bitmap 索引)
採用第三方系統實現text/blob全文檢索
常用排序(ORDER BY)、分組(GROUP BY)、取唯一(DISTINCT)欄位上建立索引
單表索引數量不超過5個
索引欄位條件不使用函式
2).開發環境
啟用log_queries_not_using_indexes
設定long_query_time為最小值
定期檢查分析slow log
授權和生產環境一致
關閉Query Cache
設定較小InnoDB Buffer Pool、key buffer size
資料量不能太少,否則有些效能問題無法提前規避
3).行為規範
批量匯入、匯出資料須提前通知DBA,請求協助觀察
推廣活動或上線新功能須提前通知DBA,請求壓力評估
不使用SUPER許可權連線資料庫
單表多次ALTER操作必須合併為一次操作
資料庫DDL及重要SQL及早提交DBA評審
重要業務庫須告知DBA重要等級、資料備份及時性要求
不在業務高峰期批量更新、查詢資料庫
提交線上DDL需求,所有SQL語句須有備註說明
4).硬體
NUMA新架構,CPU直接存取記憶體,更高效
CPU一般不是瓶頸,但MySQL多核支援仍不佳
裝置越來越廉價,大記憶體解決很多問題
SSD應用越來越廣泛,未來是主力
RAID卡可有效提升IOPS及資料安全(RAID 10 vs RAID 5)
RAID卡必須配備BBU,設定FORCE WB
優化建議:
1).系統
升級到64位
/tmp使用/dev/shm的tmpfs
核心
IO排程:deadline,noop,反正不要cfq
VM管理:vm.swappiness=0
2).檔案系統:xfs/zfs
全B+樹,高效
分配組,提高併發度
延遲分配,減少IO
mount:nobarrier、data=ordered,writeback
3).MySQL配置
memlock
open_files_limit
max_connections
long_query_time
table_open_cache
key_buffer_size
query_cache_size
tmp_table_size/max_heap_table_size
innodb buffer pool
innodb_flush_log_at_trx_commit
interactive_timeout/wait_timeout
transaction_isolation
innodb_log_file_size
innodb_data_file_path
innodb_max_dirty_pages_pct
1).索引規範
顯式指定自增 int/bigint unsigned not null 作為主鍵
不使用外來鍵
合理利用覆蓋索引,但欄位儘量不超過5個
合理利用最左索引(字首索引/部分索引)
及時刪除冗餘索引
選擇適當的索引順序,選擇性高條件靠前
基數( Cardinality )很低的欄位不建立索引(MySQL還不支援 bitmap 索引)
採用第三方系統實現text/blob全文檢索
常用排序(ORDER BY)、分組(GROUP BY)、取唯一(DISTINCT)欄位上建立索引
單表索引數量不超過5個
索引欄位條件不使用函式
2).開發環境
啟用log_queries_not_using_indexes
設定long_query_time為最小值
定期檢查分析slow log
授權和生產環境一致
關閉Query Cache
設定較小InnoDB Buffer Pool、key buffer size
資料量不能太少,否則有些效能問題無法提前規避
3).行為規範
批量匯入、匯出資料須提前通知DBA,請求協助觀察
推廣活動或上線新功能須提前通知DBA,請求壓力評估
不使用SUPER許可權連線資料庫
單表多次ALTER操作必須合併為一次操作
資料庫DDL及重要SQL及早提交DBA評審
重要業務庫須告知DBA重要等級、資料備份及時性要求
不在業務高峰期批量更新、查詢資料庫
提交線上DDL需求,所有SQL語句須有備註說明
4).硬體
NUMA新架構,CPU直接存取記憶體,更高效
CPU一般不是瓶頸,但MySQL多核支援仍不佳
裝置越來越廉價,大記憶體解決很多問題
SSD應用越來越廣泛,未來是主力
RAID卡可有效提升IOPS及資料安全(RAID 10 vs RAID 5)
RAID卡必須配備BBU,設定FORCE WB
優化建議:
1).系統
升級到64位
/tmp使用/dev/shm的tmpfs
核心
IO排程:deadline,noop,反正不要cfq
VM管理:vm.swappiness=0
2).檔案系統:xfs/zfs
全B+樹,高效
分配組,提高併發度
延遲分配,減少IO
mount:nobarrier、data=ordered,writeback
3).MySQL配置
memlock
open_files_limit
max_connections
long_query_time
table_open_cache
key_buffer_size
query_cache_size
tmp_table_size/max_heap_table_size
innodb buffer pool
innodb_flush_log_at_trx_commit
interactive_timeout/wait_timeout
transaction_isolation
innodb_log_file_size
innodb_data_file_path
innodb_max_dirty_pages_pct
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2141669/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 規範 (資料庫表設計規範)MySql資料庫
- MySQL資料庫設計規範MySql資料庫
- MySQL 高效能優化規範建議MySql優化
- (1) Mysql高效能優化規範建議MySql優化
- MySQL 資料庫規範--設計篇MySql資料庫
- MySQL之規範資料庫設計MySql資料庫
- MySQL資料庫規範 (設計規範+開發規範+操作規範)MySql資料庫
- 資料庫優化建議資料庫優化
- MySQL-11.資料庫的設計規範MySql資料庫
- MySQL資料庫設計與開發規範MySql資料庫
- mysql資料庫規範MySql資料庫
- 資料庫操作規範及SQL書寫建議資料庫SQL
- MySQL資料庫優化:縮小資料的五點建議VCMySql資料庫優化
- 《MySQL 進階篇》十六:資料庫的設計規範MySql資料庫
- MySql 資料庫 Schema 設計的效能最佳化:規範的物件命名MySql資料庫物件
- 八、資料庫的歸約,三大正規化(規範資料庫設計)資料庫
- [資料庫]【MySQL】MySQL資料庫規範總結資料庫MySql
- 資料庫查詢和資料庫(MySQL)索引的最佳化建議資料庫MySql索引
- MongoDB資料庫的設計規範MongoDB資料庫
- MySQL資料庫六大設計規範總結1MySql資料庫
- MySQL建庫建表索引規範MySql索引
- MySQL 規範及優化MySql優化
- 資料庫系統操作規範及SQL書寫建議資料庫SQL
- MySQL 社群規範 | 資料庫篇MySql資料庫
- 1.2.4 資料庫規範化資料庫
- python程式設計規範系列–建議01~07Python程式設計
- PHP開發內部規範,歡迎提出優化建議PHP優化
- MySQL資料庫優化MySql資料庫優化
- MySql資料庫最佳化的幾條核心建議MySql資料庫
- 資料庫建表和上線指令碼常見規範資料庫指令碼
- 【乾貨】MySQL資料庫開發規範MySql資料庫
- 資料庫表規範化問題資料庫
- 資料庫建表設計六正規化介紹枘雍資料庫
- MYSQL資料庫------SQL優化MySql資料庫優化
- 資料庫設計三正規化資料庫
- MySQL系列資料庫設計三正規化教程示例隍啃MySql資料庫
- 資料庫命令規範資料庫
- 資料探勘實驗(一)資料規範化【最小-最大規範化、零-均值規範化、小數定標規範化】
- 常見的資料設計規範