FIFO操作およびSELECT AND CONSUME - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage

キュー テーブルの属性

キュー テーブルは、通常の基本テーブルによく似ていますが、非同期先入れ先出し(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度しか処理されないことが保証されます。