CONSUMEモード トランザクションは、SELECT AND CONSUME操作が指定のキュー テーブルで行の検索に失敗したとき、遅延、待機、または選択状態になります。そのキュー テーブルに対するINSERT操作は、トランザクションを再起動します。
CONSUMEモードで行を検索すると、システムはそれをテーブルから削除します。
典型的なCONSUMEモードには、次の処理が含まれることがあります。
- リクエスト元がSELECT AND CONSUME TOP 1文を、データの入っていないキュー テーブルに対して発行する。
- リクエストがFIFOキャッシュにアクセスするが、行が見つからない。
- システムはキュー テーブルの状態が変化するまで、未処理のリクエストを含むトランザクションを遅延状態にする。
1つのPEにつき同時に遅延状態になれるトランザクション数は、24までです。この数を超えると、システムはリクエスト元にエラーを返します。
- リクエスト元は、遅延したトランザクションから以前に指定されたキュー テーブルに対して、INSERT操作を発行する。
- 行のセットをキュー テーブルに挿入すると、遅延しているトランザクションを再起動するためのメッセージが送られる。遅延しているトランザクションは、次のいずれかの方法で再起動されることもあります。
- トランザクションに対してABORT文を発行するという直接的な介入により。
- 遅延しているトランザクションが保留されているキュー テーブルを削除するという間接的な介入により。
- 再起動したトランザクションは、新規に値の取り込まれたキュー テーブルに対してSELECT AND CONSUME TOP 1操作を実行する。
SELECT AND CONSUME文は、同じトランザクション内でキュー テーブルに挿入されたどの行でも消費できます。
- 選択リクエストが実現した後、システムは選択された行のセットをキュー テーブルから消費(削除)する。
他のデータベース リソースとの競合を避けるために、SELECT AND CONSUME TOP 1文をトランザクション内のできるだけ早い位置に指定してください。これにより、他のリクエストによって必要とされることのあるリソースをロックしたままでSELECT AND CONSUME TOP 1文が遅延状態に入る可能性が最小になります。
SELECT AND CONSUME TOP 1操作に使用可能なロック割当ては、行ハッシュ レベルで適用されるWRITEの重要度だけです。
INSERTリクエスト、SELECTリクエスト、およびSELECT AND CONSUME文がイベント処理に関連したデータを処理する方法については、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。
データベースによるキュー テーブル トランザクションの管理の詳細については、<Teradata Vantage™- SQLリクエストおよびトランザクション処理、B035-1142>を参照してください。