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

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

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Release Date
2021年7月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-171K-JPN
Language
日本語 (日本)

キュー テーブルの属性

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