最佳化MySQL LOAD DATA INFILE 效能
使用LOAD DATA INFILEMy 指令將大量資料匯入資料時,效能可能會受到重大關切。出現的一個挑戰是在不使用密鑰導入(這可能導致資料加載速度更快但密鑰創建速度較慢)和使用密鑰導入(這會減慢導入過程)之間進行權衡。以下是一些加速導入的策略:
按主鍵排序資料:
在載入資料之前,根據主鍵順序對 CSV 檔案進行排序目標表。這在使用 InnoDB 時特別有用,因為它使用聚集主鍵,這意味著排序時資料載入速度會更快。
停用約束:
暫時停用唯一和外部鍵約束(設定 unique_checks = 0;設定foreign_key_checks = 0;)以提高導入速度。載入資料後,您可以再次啟用這些約束(set unique_checks = 1; setforeign_key_checks = 1;)。
停用二進位日誌記錄:
停用二進位日誌記錄(set sql_log_bin=0;) 也可以縮短匯入時間。啟用後,MySQL 將所有寫入查詢記錄到二進位日誌中以用於複製目的。禁用它可以釋放可用於載入資料的資源。
截斷表:
在載入資料之前,截斷目標表以刪除任何現有行(truncate < ;表>;)。這可確保您匯入的資料是表中的唯一資料。
分割 CSV 檔案:
如果您的 CSV 檔案非常大,請考慮將其拆分為較小的區塊。這允許 MySQL 以較小的批量載入數據,從而減少每次載入操作所需的時間。
終止慢查詢:
終止慢查詢而不重新啟動 MySQL ,使用 KILL QUERY 指令。此命令可以從 MySQL 命令列或使用 phpMyAdmin 等工具執行。
其他提示:
以上是如何針對大數據導入最佳化 MySQL LOAD DATA INFILE 效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!