これらのパフォ,マンスのヒントは,セクション8.2.2.1 " insertステトメントの速度"の高速挿入の一般的なガ▪▪ドラ▪▪ンを補足するものです。
複数のクラアントが大量の行を挿入する場合のパフォマンスを向上するには,
插入延迟
ステ,トメントを使用します。セクション13.2.5.2 "插入延迟構文"を参照してください。この技法は,MyISAM
およびその他の一部のストレ,ジエンジンには有効ですが,InnoDB
には機能しません。注記MySQL 5.6.6現在,
插入延迟
は非推奨であり,将来のリリ,スで削除されます。代わりに插入
(延迟
を付けない)を使用してください。MyISAM
テ,ブルでは,デ,タファ,选择
ステ,トメントの実行中に同時に,同時挿入を使用して行を追加できます。セクション8.10.3“同時挿入”を参照してください。少しの追加作業で,
MyISAM
テブルに多数のンデックスがある場合に,テブルの加载数据文件
の実行をさらに高速化できます。次の手順を使用します。刷新表
ステ,トメントまたはmysqladmin刷新表コマンドを実行します。テブルのンデックスのすべての使用を削除するには,Myisamchk——keys-used=0 -rq
/ / db / tbl_name /路径
を使用します。加载数据文件
を使用して,テ,ブルにデ,タを挿入します。これはesc escンデックスを更新しないため,非常に高速です。今後,テ,ブルから読み取りだけをする場合は,myisampackを使用してそれを圧縮します。セクション15.2.3.3 "圧縮テブルの特徴"を参照してください。
myisamchk rq
/ / db / tbl_name /路径
を使用して@ @ンデックスを再作成します。これにより,ディスクに書き込む前にメモリー内にインデックスツリーを作成し,大量のディスクシークを回避するため,加载数据文件
時の@ @ンデックスの更新よりかなり高速になります。結果のンデックスリは完全にバランスも取れています。刷新表
ステ,トメントまたはmysqladmin刷新表コマンドを実行します。
デ,タを挿入する
MyISAM
テ,ブルが空の場合は,加载数据文件
は先述の最適化を自動的に実行します。自動の最適化と明示的に手順を使用することの主な違いは,サ,バ,に加载数据文件
ステ,,myisamchkでは▪▪ンデックスの作成のためにはるかに多くの一時メモリ▪▪を割り当てることができることです。myisamchkの代わりに次のステ,トメントを使用して,
MyISAM
テブルの一意でないンデックスを無効または有効にすることもできます。これらのステ,トメントを使用すると,刷新表
操作をスキップできます。ALTER TABLEtbl_name禁用键;ALTER TABLEtbl_name使键;
非トランザクションテ,ブルに対して,複数ステ,トメントで実行される
插入
操作を高速化するには,テ,ブルをロックします。锁表写入;INSERT INTO a VALUES (1,23),(2,34),(4,33);INSERT INTO a VALUES (8,26),(6,29);...打开表;
これは,すべての
插入
ステートメントの完了後に,インデックスバッファーが1回だけディスクにフラッシュされるため,パフォーマンスにメリットがあります。通常は,插入
ステ,トメントの数と同じだけ;すべての行を1の插入
で挿入できる場合は,明示的なロックステ,トメントは必要ありません。ロックは複数接続テストの合計時間も短縮しますが,個々の接続がロックを待機するため,それらの最大待機時間は長くなることがあります。次のように5台のクラescアントが同時に挿入の実行を試みるとします。
接続1は1000回の挿入を実行します
接続2,3,および4は1回の挿入を実行します
接続5は1000回の挿入を実行します
ロックを使用しない場合,接続2,3,および4は1と5の前に終了します。ロックを使用した場合,接続2,3,および4は1または5の前に終了しない可能性がありますが,合計時間は約40%高速化するはずです。
MySQLでは,
插入
、更新
,および删除
操作はきわめて高速ですが,約5回超の連続した挿入や更新を実行するすべての操作の周囲にロックを追加することによって,全体のパフォーマンスを向上できます。著しく多くの連続した挿入を実行する場合,锁表
のあとにときどき(1000行程度ごとに)打开表
を実行して,ほかのスレッドのテ,ブルへのアクセスを許可できます。これによってもパフォ,マンスの向上が得られます。上記の戦略を使用した場合でも,デ,タのロ,ドには
加载数据文件
より插入
の方がはるかに遅くなります。MyISAM
テ,ブルの加载数据文件
と插入
の両方に対してパフォ,マンスを向上するには,key_buffer_size
システム変数を増やして,キ,キャッシュを拡張します。セクション8.11.2 "サ,バ,パラメ,タのチュ,ニング"を参照してください。