如何使用帶有鍵表的 Load Data Infile 優化 MySQL 資料導入?

Susan Sarandon
發布: 2024-11-08 08:49:02
原創
402 人瀏覽過

How to Optimize MySQL Data Import using Load Data Infile for Tables with Keys?

使用 Load Data Infile 最佳化 MySQL 資料匯入

將大型資料集匯入 MySQL 表可能是一項耗時的任務。使用“載入資料到文件中...”命令時,平衡速度和資料完整性可能具有挑戰性。這個問題探討了提高此類導入效能的方法,特別是對於帶有鍵的表。

提高導入速度

問題中提到的主要問題是慢鍵導入資料後創建,無需密鑰。若要解決此問題:

  • 對 CSV 檔案進行排序: 依照表主鍵的順序排列 CSV 檔案中的資料。這有助於 Innodb 利用其群集主鍵結構來加快載入速度。
  • 停用約束: 暫時停用唯一鍵和外鍵檢查以減少載入期間的開銷。使用指令 set unique_checks = 0;並設定foreign_key_checks = 0;。
  • 停用二進位日誌記錄:關閉二進位日誌記錄(設定sql_log_bin = 0;)以繞過日誌記錄以提高效能。
  • 分割大檔案: 將大 CSV 檔案分成較小的區塊並單獨載入。這可以減少記憶體消耗並加快進程。

加速金鑰建立

載入資料後,重建金鑰可能會是一個漫長的操作。這裡有一些建議:

  • 批次插入:在 LOAD DATA INFILE 語句中使用 BULK INSERT 子句一次匯入帶有鍵的資料。
  • 自適應雜湊索引:啟用自適應雜湊索引(innodb_adaptive_hash_index=ON) 以加快常用查詢的索引建立速度。
  • 並行索引: 如果可能,請使用平行索引 (innodb_parallel_alter=ON) 為索引建立建立多個執行緒(可能)減少所用時間。

終止慢速查詢

要終止終止後繼續執行的慢速查詢,請考慮:

  • 重試連線:中斷並重新連線到MySQL 伺服器以優雅地結束查詢。
  • 使用查詢 ID: 識別使用 SHOW PROCESSLIST 查看查詢的 ID,並使用 KILL [QUERY_ID] 終止它。
  • 重新啟動 MySQL: 作為最後的手段,重新啟動 MySQL 將終止所有正在執行的查詢。但是,它可能會導致服務中斷。

以上是如何使用帶有鍵表的 Load Data Infile 優化 MySQL 資料導入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板