キュー テーブルの属性
キュー テーブルは、通常の基本テーブルによく似ていますが、非同期先入れ先出し(FIFO)キューのような動作をする点が異なります。
キュー表の最初の列には、キュー挿入タイムスタンプ(QITS)値が含まれます。CREATE TABLEリクエストでは、最初の列を以下のデータ型および属性で定義する必要があります。
TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6)
行のQITS値は、その行がキュー テーブルに挿入された時間を示します(ユーザー提供によって別の値が挿入されない限り)。
キュー テーブルの行における適切なFIFO順序
以下の理由により、各行のFIFO順は厳密なものではありません。
- MPPシステムのノードのシステム クロックは同期が取られていない。
- 現時刻のタイムスタンプとは異なるユーザー指定の値がQITS列に挿入されることがある。
- トランザクションまたはリクエストのロールバックのため、すでに消費された行よりも古いQITSの値の行が復元される可能性がある。
- 1つの複数文リクエストに含まれる複数のINSERT文でデフォルト値が使用される場合、複数の行がQITS列に同じ値を使用します。
FIFOのpop操作のようなSELECT AND CONSUME文操作
SELECT AND CONSUME文は、以下の方法でFIFOのpopのように動作します。
- 指定されたキュー テーブルのQITS列のうち値が最も古い行のデータが返されます。
- キュー テーブルからその行が削除されます。それにより、行は1度しか処理されないことが保証されます。