Mysql

使用 3 個索引和 1 個外鍵降低 MySQL 插入速度

  • May 8, 2021

我正在使用包含數十億行數據的 Innodb 開發 MySQL 數據庫。

我的表有 16 個欄位、3 個索引、1 個外鍵和 1 個主鍵。我的緩衝池大小為 47 GiB。

當我在禁用索引的情況下測試插入 1000 萬行時,花了 100 秒。

啟用索引後,由於我不斷地在 1000 萬行中插入數十億行,最初需要 150 秒……然後上升到 400 秒……然後增加到 1000 秒……現在每 1000 萬行達到 2000 秒行(使用載入數據語句)。

我想知道如何使用這些以後使用所需的索引來加快我的插入速度。

MySQL 在插入過程中崩潰了幾次,我必須重新啟動它……我想知道減速是否與崩潰有關。謝謝!

在此處輸入圖像描述

在此處輸入圖像描述

  1. 禁用鍵和 FK
  2. 載入數十億
  3. 使能夠

同時,提供SHOW CREATE TABLE;可能會有一些批評可能會有所幫助。

特別是,如果這是一個數據倉庫應用程序,您是否有任何匯總表?

在載入表格之前執行以下操作

SET UNIQUE_CHECKS=1;
SET autocommit=0;
SET unique_checks=0;
SET foreign_key_checks=0;

導入完成後,全部啟用。

使用多行插入

$$ like in mysqldump –extended-insert $$

引用自:https://dba.stackexchange.com/questions/244277