MyISAM
テーブルでは、テーブルに削除された行がない場合、SELECT
の実行と同時に行を挿入できることに注意してください。
上記がデフォルト作動で、concurrent_inserts
システム変数で制御できます。1
に設定された場合、削除された行を含むMyISAMテーブルで同時挿入が起こります。2
に設定された場合、削除された行があっても、全ての新しい行がテーブル後部に付加されることで同時挿入が強制的に行われます。???を参照してください。
同時挿入が使用できる状況下では、INSERT
ステートメントのDELAYED
修飾子を使用する必要はほとんどありません。項12.2.4.2. 「INSERT DELAYED
構文」を参照してください。
バイナリログを使用している場合、同時挿入はCREATE
... SELECT
もしくはINSERT ...
SELECT
ステートメントの一般的な挿入に変換されます。このことで、バックアップ演算中にログを適用することでテーブルの正確なコピーを再作成することができます。
LOAD DATA
INFILE
で同時挿入(つまり、途中に空きブロックを含まない)の条件を満たすMyISAM
テーブルを使用してCONCURRENT
を指定する場合、他のスレッドはLOAD
DATA
実行中にテーブルからデータを取得することができます。このオプションを使用することで、たとえ他のスレッドが同時にテーブルを使用しているとしても、LOAD
DATA
のパフォーマンスに幾分かの影響が与えられます。