萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

101 條 MySQL 調優與優化實戰技巧大全

MySQL 效能調優涵蓋硬體、OS、配置、模式、查詢、備份六大維度。本文整理 101 條實戰技巧,從「足夠記憶體載入 InnoDB」到「免費監控工具 Monitis」,條條可落地執行。

精選重點技巧

硬體與 OS (1-24)

  • 記憶體容納熱數據、禁用 Swap、電池備援 RAID 卡、RAID 10、避免 RAID 5、分離 OS/資料/日誌/TempDB 物理磁碟、XFS 檔案系統、NOOP/DEADLINE I/O 排程、64 位元 OS、清理無用套件、Hosts 檔免 DNS、專用資料庫伺服器。

MySQL 配置 (25-39)

  • innodb_flush_method=O_DIRECT 避免雙緩衝、innodb_buffer_pool_size 覆蓋熱數據、innodb_log_file_size 適中加速崩潰恢復、thread_cache_size ~16、skip-name-resolve、查詢快取視資料變動率啟用、tmp_table_size/max_heap_table_size 防寫磁碟、sort_buffer_size 勿過大、key_buffer_size 依命中率調整、innodb_flush_log_at_trx_commit=0 提升寫入 (犧牲 1 秒持久性)。

模式設計 (40-62)

  • 歸檔舊數據、適度索引、壓縮 TEXT/BLOB、謹慎用 UTF-8 (比 latin1 慢)、節制觸發器、最小化冗余、連接表代替寬表、最小數據類型、LOB 分離、定期 OPTIMIZE TABLE、InnoDB 重建優化、加欄位時先刪索引、選對儲存引擎、歸檔引擎存日誌、Session 存 Memcached、VARCHAR 代替 CHAR、漸進式變更、測試環境驗證、配置「少即是多」。

查詢優化 (63-86)

  • 慢查詢日誌、EXPLAIN、持續基準測試、避免 COUNT(*) 鎖表、一致查詢利用快取、GROUP BY 代替 DISTINCT、WHERE/GROUP BY/ORDER BY 用索引列、簡化索引、USE INDEX 強制、SQL_MODE=STRICT、INSERT ... ON DUPLICATE KEY UPDATE、ORDER BY ... LIMIT 代替 MAX、避免 ORDER BY RAND()、LIMIT 節制、UNION 代替子查詢、LOCK IN SHARE MODE 減少排他鎖、重啟後預熱、DROP+CREATE 代替 DELETE 清表、最小化選取列、持久連接、負載下 SHOW PROCESSLIST、鏡像資料驗證可疑查詢。

備份策略 (87-101)

  • 從庫備份、備份前停複制、冷備份 (停庫複製檔案)、mysqldump --opt、備份二進制日誌、不信任 LVM 快照、單表導出易還原、導入前禁用 FK/Unique、記錄體積增長、監控複寫錯誤延遲、定期備份、定期演練還原、部署監控 (Monitis 免費)。
copyright © 萬盛學電腦網 all rights reserved