MySQL InnoDB 插入操作的效能問題
簡介
使用以下指令將資料插入MySQL 表在某些情況下,InnoDB 引擎可能需要比預期更長的時間。本文解決了這個效能問題並提供了解決方案。
關鍵問題
為什麼將資料插入 MySQL InnoDB 表中速度過慢?
分析
提供的測試腳本說明了插入效能之間的明顯差異MyISAM 和 InnoDB 儲存引擎。 MyISAM 在大約 6 秒內完成 100 萬行的插入,而 InnoDB 完成相同任務需要超過 3400 秒。
說明
造成這種效能差距的主要原因MyISAM 和 InnoDB 之間的根本設計差異在於。 MyISAM 缺乏事務支持,使其能夠更有效率地插入資料。相較之下,InnoDB 強制事務完整性,要求在每個語句之後進行提交操作。預設情況下,InnoDB 在每次插入後都會執行日誌刷新到磁碟,從而導致顯著的效能開銷。
解決方案
為了緩解此效能問題,利用槓桿至關重要InnoDB的事務處理能力有效。透過將插入語句包含在明確事務中,我們可以降低磁碟寫入頻率並顯著提高插入速度。
為此,請在啟動插入循環之前執行以下語句:
START TRANSACTION
完成插入操作後,使用以下語句提交交易:
COMMIT
以上是為什麼我的 InnoDB INSERT 效能比 MyISAM 慢這麼多?的詳細內容。更多資訊請關注PHP中文網其他相關文章!