最佳化MySQL LOAD DATA INFILE 以實現快速資料匯入
使用LOAD DATA INFILE 將大量資料集匯入MySQL 可能非常耗時,尤其SQL是在導入後建立索引。本文探討了各種技術來加速流程並解決終止查詢在資料庫中繼續執行的問題。
加速LOAD DATA INFILE
對於InnoDB 表,請考慮以下最佳化技巧:
-
按主鍵對CSV 檔案進行主鍵對CSV排序order: InnoDB 使用聚集主鍵,因此對檔案進行排序將顯著加快載入過程。
-
載入前截斷表:刪除現有資料以最大程度地減少讀取和讀取時間
-
停用自動提交: 設定autocommit =0 延遲交易提交,直到整個導入,減少提交次數並提高效能。
-
停用檢查:使用 set unique_checks=0 和 setforeign_key_checks=0 暫時停用唯一鍵和外鍵檢查。
-
停用二進位日誌記錄:透過 set sql_log_bin=0 暫停二進位日誌記錄以消除相關開銷包含寫入日誌。
-
將 CSV 檔案拆分為多個區塊:將 CSV 檔案分成更小的片段以加快載入速度。
終止查詢
要終止慢速查詢而不重新啟動MySQL,請嘗試以下:
-
KILL 指令: 發出KILL {query_id} 指令以終止特定查詢。
-
關閉客戶端連線: 強制關閉執行查詢的終端機視窗也將停止正在執行的查詢。但是,這可能會導致資料損壞或不一致。
透過應用這些最佳化,您可以顯著提高 LOAD DATA INFILE 的效能並簡化資料導入過程。
以上是如何最佳化 MySQL LOAD DATA INFILE 以加快資料導入速度?的詳細內容。更多資訊請關注PHP中文網其他相關文章!