■2-10■ INSERT DELAYED文INSERT DELAYED文がどのように実行されるか、具体的に説明します(【図.2-25】参照)。 図.2-25 INSERT DELAYED文の挙動
現在、スレッドBが(テーブルTに対し)SELECT文を実行中です。 ここでスレッドA1が(テーブルTに対し)INSERT DELAYED文を実行要求すると、INSERT DELAYED文実行用のスレッドが生成されます。このスレッドはINSERT文を保存するキュー(Delayed Queue)を持っており、ここではスレッドA1のINSERT DELAYED文が保存されます。 スレッドA1はINSERT文を別スレッドに任せてしまったので、別のSQL文が実行可能となります。 同様にスレッドA2とスレッドA3が(テーブルTに対し)INSERT DELAYED文の実行要求すると、それぞれのINSERT文がキュー(Delayed Queue)に保存されます。 さて、スレッドBのSELECT文が終了すると、キュー(Delayed Queue)に保存されたINSERT文が最大でdelayed_insert_limit個実行されます。 その後、もしもSELECT文の実行要求があればそのSELECT文を実行します。 このように、キュー(Delayed Queue)中のINSERT文をdelayed_insert_limit個処理する毎にSELECT文の実行要求があるか否か調べ(もしもあるならSELECT文を実行)、キューにINSERT文が無くなるまでこれを繰り返します。 なお、INSERT DELAYED文実行用のスレッドは、INSERT文の実行要求がdelayed_insert_timeout秒間なければ、KILLされます。 ここで`delayed_insert_limit'と`delayed_insert_timeout'はシステム変数です。 [PREVIOUS][UP][NEXT] |