InnoDB での一括挿入のインデックスの無効化
InnoDB での一括挿入のパフォーマンスを最適化するために、インデックスを一時的に無効にすることを検討できます。ただし、このアクションにより、このオプションと InnoDB の非互換性を示す警告メッセージがトリガーされます。
一括挿入のインデックス無効化の代替案:
インデックス無効化の制限を回避するにはInnoDB では、代替アプローチが存在します。
-
自動コミットの一時停止: 自動コミットを非アクティブ化 (SET autocommit=0) すると、複数の挿入を 1 つのトランザクションにグループ化し、オーバーヘッドを削減できます。
-
一意キー チェックと外部キー チェックを無効にする: 一意キー チェックと外部キー チェックを一時的に無効にする (SET unique_checks=0; SET foreign_key_checks=0;) と、挿入操作中のインデックス検索の必要がなくなります。
-
LOAD DATA INFILE を使用した一括挿入: LOAD DATA INFILE コマンドはインデックスをバイパスし、テーブルへの直接データのロードを可能にします。
一括処理を高速化するための追加のヒント挿入:
インデックスの無効化以外にも、いくつかの追加手法により一括挿入速度を向上させることができます:
-
テーブル定義の最適化: 適切なデータ型と列を定義します。
-
バッファ プールのチューニング: テーブル データ全体を収容できる十分なバッファ プール サイズを確保し、頻繁なディスク アクセスを防ぎます。
-
バッチ挿入: 複数の挿入を 1 つのクエリにまとめて、サーバーとクライアントの対話を減らし、効率を向上させます。
-
トリガーとストアド プロシージャを無効にする: テーブルに関連付けられているトリガーまたはストアド プロシージャを一時停止します。追加の処理オーバーヘッドを排除します。
以上が記事の内容に適した質問ベースのタイトルをいくつか示します。
**直接的かつ有益:**
* **InnoDB で一括挿入のインデックスを無効にできないのはなぜですか?**
* **I での一括挿入を最適化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。