このページは機械翻訳したものです。
これらのパフォーマンスのヒントは、セクション8.2.5.1「INSERT ステートメントの最適化」の高速挿入の一般的なガイドラインを補足するものです。
- 
InnoDBにデータをインポートする場合、自動コミットモードでは挿入のたびに、ディスクへのログのフラッシュを実行するため、それをオフにします。 インポート操作時に自動コミットを無効にするには、それを、SET autocommitステートメントとCOMMITステートメントで囲みます。SET autocommit=0; ... SQL import statements ... COMMIT;mysqldump オプション --optは、それらをSET autocommitステートメントとCOMMITステートメントで囲まなくても、InnoDBテーブルに高速にインポートするダンプファイルを作成します。
- 
副キーに UNIQUE制約がある場合、インポートセッション中に一意性チェックを一時的にオフにすることで、テーブルインポートを高速化できます。SET unique_checks=0; ... SQL import statements ... SET unique_checks=1;大きなテーブルの場合、 InnoDBはその変更バッファを使用してセカンダリインデックスレコードをバッチで書き込むことができるため、これによりディスク I/O が大量に節約されます。 データに重複キーが含まれていないことを確認してください。
- 
テーブルに FOREIGN KEY制約がある場合、インポートセッションの間の外部キーチェックをオフにすることで、テーブルインポートを高速化できます。SET foreign_key_checks=0; ... SQL import statements ... SET foreign_key_checks=1;大きいテーブルの場合、これにより、大量のディスク I/O を節約できます。 
- 
多くの行を挿入する必要がある場合、複数行 INSERT構文を使用して、クライアントとサーバー間の通信オーバーヘッドを軽減します。INSERT INTO yourtable VALUES (1,2), (5,5), ...;このヒントは、 InnoDBテーブルだけではなく、任意のテーブルへの挿入に有効です。
- 自動増分カラムを含むテーブルに一括挿入を実行する場合は、 - innodb_autoinc_lock_modeを 1 (連続) ではなく 2 (インターリーブ) に設定します。 詳細は、セクション15.6.1.6「InnoDB での AUTO_INCREMENT 処理」 を参照してください。
- 一括挿入を実行する場合は、 - PRIMARY KEYの順序で行を挿入する方が高速です。- InnoDBテーブルでは clustered index が使用されるため、- PRIMARY KEYの順序で比較的高速にデータを使用できます。- PRIMARY KEY順序での一括挿入の実行は、バッファプール内に完全に収まらないテーブルで特に重要です。
- 
InnoDBFULLTEXTインデックスにデータをロードする場合の最高のパフォーマンスのため、次の一連のステップに従います。- 
テーブル作成時に、 FTS_DOC_ID_INDEXという一意のインデックスで、型BIGINT UNSIGNED NOT NULLのカラムFTS_DOC_IDを定義します。 例:CREATE TABLE t1 ( FTS_DOC_ID BIGINT unsigned NOT NULL AUTO_INCREMENT, title varchar(255) NOT NULL DEFAULT '', text mediumtext NOT NULL, PRIMARY KEY (`FTS_DOC_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE UNIQUE INDEX FTS_DOC_ID_INDEX on t1(FTS_DOC_ID);
- テーブルにデータをロードします。 
- データがロードされたら、 - FULLTEXTインデックスを作成します。
 注記テーブル作成時に FTS_DOC_IDカラムを追加する場合、FTS_DOC_IDは各INSERTまたはUPDATEによって単調に増分される必要があるため、FULLTEXTインデックス設定されたカラムが更新されたときに、FTS_DOC_IDカラムが更新されることを確認します。 テーブルの作成時にFTS_DOC_IDを追加せずに、InnoDBで DOC ID を管理する場合、InnoDBは、次のCREATE FULLTEXT INDEXコールでFTS_DOC_IDを非表示カラムとして追加します。 ただし、このアプローチでは、パフォーマンスに影響を与える可能性のあるテーブルの再構築が必要です。
-