これらのパフォマンスのヒントは,セクション8.2.2.1 " insertステトメントの速度"の高速挿入の一般的なガ邮箱ドラ邮箱ンを補足するものです。
InnoDB
にデータをインポートする場合,自動コミットモードでは挿入のたびに,ディスクへのログのフラッシュを実行するため,それをオフにします。ンポ,ト操作時に自動コミットを無効にするには,それを,设置自动提交
ステトメントと提交
ステトメントで囲みます。设置自动提交= 0;...SQL导入语句…提交;
, mysqldumpオプション
——选择
は,それらを设置自动提交
ステトメントと提交
ステトメントで囲まなくても,InnoDB
テブルに高速に。副キに
独特的
制約がある場合,インポートセッション中に一意性チェックを一時的にオフにすることで,テーブルインポートを高速化できます。设置unique_checks = 0;...SQL导入语句…设置unique_checks = 1;
大きいテブルの場合,
InnoDB
はその挿入バッファーを使用して,セカンダリインデックスレコードを一括して書き込むことができるため,これにより,大量のディスクI / Oが節約されます。デタに重複キが含まれていないことを確認してください。テブルに
外键
制約がある場合,インポートセッションの間の外部キーチェックをオフにすることで,テーブルインポートを高速化できます。设置foreign_key_checks = 0;...SQL导入语句…设置foreign_key_checks = 1;
大きいテブルの場合,これにより,大量のディスクI/Oを節約できます。
多くの行を挿入する必要がある場合,複数行
插入
構文を使用して,クラ。INSERT INTO yourtable VALUES(1,2),(5,5),…
このヒントは,
InnoDB
テブルだけではなく,任意のテブルへの挿入に有効です。自動邮箱ンクリメントカラムのあるテ邮箱ブルへの一括挿入を実行する場合,
innodb_autoinc_lock_mode
をデフォルト値の1の代わりに2に設定します。詳細は,セクション14.6.5.2 "構成可能なInnoDBの自動ereplicationンクリメントロック"を参照してください。InnoDB
全文
econンデックスにデタをロ。テブル作成時に,
FTS_DOC_ID_INDEX
という一意のンデックスで,型Bigint unsigned,不是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 '))在t1上创建唯一的FTS_DOC_ID_INDEX (FTS_DOC_ID);
テブルにデタをロドします。
デタがロドされたら,
全文
ンデックスを作成します。
注記テブル作成時に
FTS_DOC_ID
カラムを追加する場合,FTS_DOC_ID
は各插入
または更新
によって単調に増分される必要があるため,全文
ンデックス設定されたカラムが更新されたときに,FTS_DOC_ID
カラムが更新されることを確認します。テブル作成時にFTS_DOC_ID
を追加せず,InnoDB
に自動的にdoc idを管理させるようにした場合,InnoDB
は次の创建全文索引
呼び出しで,FTS_DOC_ID
を非表示カラムとして追加します。ただし,このアプロチでは,パフォブルの再構築が必要になります。