MySQL 使用者長期面臨一大痛點:SQL 備份檔案匯入無法並發,導致大量資料導入耗時極長。本文分享一套經實測驗證的並發匯入方案,助您大幅縮短匯入時間。
最直觀的並發策略是將完整 SQL 檔切分為多個小檔,再啟動多線程同時匯入。具體實施步驟如下:
AUTO-INC 表級鎖,嚴重限制並發效能;5.1 版本改進鎖機制(innodb_autoinc_lock_mode),大幅緩解爭用。| 版本與參數 | 串行耗時 | 並行耗時 | 提升幅度 |
|---|---|---|---|
MySQL 5.0.67, innodb_flush_log_at_trx_commit=1 | 01:51:34 | 01:25:05 | ~24% |
MySQL 5.0.67, innodb_flush_log_at_trx_commit=0 | 01:49:36 | 01:11:29 | ~35% |
MySQL 5.1, innodb_flush_log_at_trx_commit=1, innodb_autoinc_lock_mode=0 | 01:52:28 | 01:38:13 | ~13% |
MySQL 5.1, innodb_flush_log_at_trx_commit=1, innodb_autoinc_lock_mode=1 | 01:54:55 | 01:26:24 | ~25% |
MySQL 5.1, innodb_autoinc_lock_mode=0 | — | 01:38:13 | — |
MySQL 5.1, innodb_autoinc_lock_mode=1 | — | 01:05:51 | ~43% |
MySQL 5.1 在 AUTO-INC 鎖機制上的改進極為關鍵。配合 innodb_autoinc_lock_mode=1(連續鎖模式)與 innodb_flush_log_at_trx_commit=1,並發匯入效能最佳,耗時從近 2 小時壓縮至 1 小時內。對於追求高併發效能、業務邏輯相對單純、可接受潛在風險的場景,強烈建議升級至 5.1 並啟用新鎖模式。