首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 效能優化全方位指南:硬體、磁碟、作業系統與架構調校 (Monty 2000 年演講整理)

     編輯:MySQL 資料庫相關知識

優化層級優先序

  1. 硬體
  2. 作業系統/函式庫
  3. SQL 伺服器 (設定與查詢)
  4. API
  5. 應用程式

硬體優化

  • 大表 (>2GB) 必須用 64 位元架構 (Alpha、Sparc、IA64),MySQL 內部大量使用 64 位元整數。
  • 大資料庫優化順序:**RAM → 快速磁碟 → CPU 能力**。
  • 更多記憶體 → 熱鍵頁面留在記憶體 → 加速鍵值更新。
  • 非交易安全表或大表避免長檢查 → **UPS 保護電源故障安全關機**。
  • 專用資料庫伺服器 → 考慮 **1GbE 乙太網路**,延遲與吞吐同等重要。

磁碟優化

  • 系統、程式、暫存檔 **獨立磁碟**;大量寫入場景將 **更新日誌/交易日誌放專用磁碟**。
  • **低尋找時間** 對資料庫磁碟關鍵。B-Tree 查找成本估算:log(行數) / log(索引區塊長度/3*2/(鍵長+指標長)) + 1 次尋找。
  • 50 萬列表,Mediumint 索引約需 4 次尋找,索引大小 ~5.2MB,實際多半緩存只需 1-2 次。
  • 寫入需 4 次尋找定位新鍵位置 + 2 次更新索引寫入列。
  • 極大資料庫受限於磁碟尋找速度,隨資料量呈 N log N 遞增。
  • **資料庫/表分散不同磁碟**:MySQL 支援符號連結實現。
  • **RAID 0 (條帶)** 提升讀寫吞吐;**RAID 0+1 (鏡像條帶)** 提升讀取與安全,寫入略降。
  • 臨時檔/可重建資料 **勿用鏡像/RAID** (除 RAID 0)。
  • Linux 啟動參數:hdparm -m16 -d1 啟用多扇區讀寫 + DMA,效能增 5-50%。
  • 掛載選項:async,noatime (預設 async)。
  • 特定熱點表可用 **記憶體磁碟** (tmpfs/ramfs),通常不必要。

作業系統優化

  • **禁止 Swap**:記憶體不足應加記憶體或降低用量,Swap 會殺死資料庫效能。
  • **禁用 NFS**:NFS 鎖定問題導致資料庫不穩定。
  • 提高 **開啟檔案數限制** (ulimit -n) 與 **進程/執行緒數限制** (在 safe_mysqld 腳本設定)。
  • 少量大表 → 告訴檔案系統勿碎片化 (Solaris)。
  • 使用 **支援大檔案的檔案系統** (Solaris)。
  • **檔案系統選擇**:Linux 上 ReiserFS 開啟/讀寫極快,檢查僅需秒級 (歷史背景:ext3/4 成熟前)。現代建議 XFS/ext4/Btrfs。
來源:Monty (MySQL 創始人) 在 O'Reilly Open Source Convention 2000 大會演講內容整理。部分硬體/檔案系統建議因年代久遠需結合現代技術 (NVMe、ZFS、XFS、ext4、大記憶體、NVRAM) 重新評估。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved