MySQL 作為主流開源數據庫,性能調優涉及硬件、作業系統、配置參數、架構設計、SQL 編寫等多個維度。本文整理 101 條實戰技巧,分類匯總供參考。
vm.swappiness=0 或關閉 Swap。innodb_flush_method=O_DIRECT:避免雙緩衝,配合 XFS/ext4。innodb_buffer_pool_size:設為物理內存 70-80%,載熱數據。innodb_log_file_size:適中(1-4GB),過大延長崩潰恢復時間。innodb_flush_log_at_trx_commit=1:ACID 嚴格;若允許秒級丟失可設 0/2 提升寫入。max_connections:按業務峰值設定,過大導致 OOM。thread_cache_size:~16,減少線程創建開銷。skip-name-resolve:禁用 DNS 反解。query_cache_type=0:高寫入場景關閉 QC,避免鎖爭用。tmp_table_size/max_heap_table_size:防止內存臨時表溢寫磁盤。sort_buffer_size:按會話分配,勿設過大(如 256KB-2MB)。key_buffer_size:MyISAM 專用,InnoDB 主看 buffer_pool。TINYINT 代替 INT,CHAR 代替 VARCHAR(定長)。utf8mb4,避免 latin1 混用導致隱式轉換。type、key、rows、Extra。SELECT *,減少網絡與 I/O。LIMIT 深分頁:延遲關聯或游標分頁。UNION ALL 代替 OR、IN 子查詢。Using index,避免回表。提示:調優無銀彈,需根據具體業務負載、數據量級、硬件條件綜合評估,切忌盲目複製參數。