Windows 環境運行 10+ 小時後,系統極慢,任務管理器顯示 MySQL 句柄數達 10 萬+。已在配置中 skip-innodb 但問題依舊。
即使配置 skip-innodb,InnoDB 相關後台線程仍可能啟動並佔用資源。核心參數 innodb_flush_log_at_trx_commit 預設值 1 導致每次事務提交強制 fsync 刷盤,高併發下 IO 嚴重阻塞,句柄積壓。
| 值 | 行為 | 性能 | 安全性 |
|---|---|---|---|
| 0 | 提交不刷盤,每秒由 OS 刷盤 | 最快 | Crash 丟失緩存事務 |
| 1 | 每次提交 fsync 刷盤 | 最慢 | ACID 完全保證 |
| 2 | 提交寫系統緩存,每秒刷盤 | 折衷 | 僅 OS Crash 丟 1-2 秒數據 |
# my.ini innodb_flush_log_at_trx_commit = 2
重啟服務後,句柄數從 10 萬降至 2 萬左右穩定,系統響應恢復正常。
skip-innodb 不等於 InnoDB 完全不佔用資源innodb_flush_log_at_trx_commit=2 是性能與安全的平衡點手工調優、持續監控,不可盲目信任向導。