16.20 - CHECKPOINT - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-162K-JPN
Language
日本語 (日本)

目的

ジャーナル テーブルに、トランザクションの回復を調整するためのフラグを配置します。

必要な権限

ジャーナル テーブルにチェックポイントを置くには、次の基準の中で少なくとも1つを満たしていなければなりません。
  • そのジャーナル テーブルに対するCHECKPOINT権限を持っている。
  • そのジャーナル テーブルを収容するデータベースに対するCHECKPOINT権限を持っている。
  • そのジャーナル テーブルを収容するデータベースの所有者である。
  • そのジャーナル テーブルの直接または間接の所有者である。

構文 - 対話形式



構文要素

table_name
チェックポイント登録項でマークを付けるジャーナル テーブル。
checkpoint_name
データベース回復活動でチェックポイント登録項を参照するために使用できるラベル。
checkpoint_nameは固有名でなければなりません。
checkpoint_nameがジャーナル内の既存のエントリと重複している場合は、システム割り当てのイベント番号で修飾できます。
checkpoint_nameを指定しない場合は、回復活動において、チェックポイント登録項をイベント番号で参照しなければなりません。

構文 - 埋め込みSQLとストアド プロシージャの形式



構文要素

database_name
チェックポイント フラグを作成するデータベースの名前。名前の後にピリオドを付ける必要があります。
table_name
チェックポイント フラグを作成するテーブルの名前。
checkpoint_label
チェックポイントにラベルを付けるSQL識別子。
label_variable
チェックポイントのラベルの付いたホスト変数。
コロンが必要です。
host_variable_name
チェックポイント フラグを備えたホスト変数の名前。
先行コロンを使用するかどうかは任意指定です。
host_indicator_variable_name
NULLを受け取る任意指定のホスト標識変数の名前。

ANSI準拠

CHECKPOINTは、ANSI SQL:2011規格に対するTeradata拡張機能です。

全体の使用上の注意

CHECKPOINTで指定したテーブルにジャーナル イメージが書き込まれるすべてのデータ テーブルに対してREADロックが設定されます。このロックのため、チェックポイント操作が終了するまで新しいトランザクションは開始することができません。さらに、更新トランザクションが終了してからチェックポイント操作が行なわれます。

この動作によりジャーナルに保存されるチェックポイントが、トランザクションのない時点を正確に表わすことができます。チェックポイント操作が終了すると、ロックが解除されます。

各チェックポイント登録項には、システムによってイベント番号が割り当てられます。 さらに、この番号はCHECKPOINTリクエスト処理の結果として返されます。この番号はリクエストの実行に関する他の情報とともに、データ ディクショナリ テーブルに格納されます。このテーブルのデータは、DBC.EventsVシステム ビューから見直すことができます。

明示的なトランザクションまたは複文リクエストにCHECKPOINTリクエストが入っている場合、そのCHECKPOINTリクエストは、トランザクションまたはリクエスト内のどのINSERT、UPDATE、またはDELETEリクエストよりも前になければなりません。

ストアド プロシージャと埋め込みSQLの使用上の注意

以下のルールがCHECKPOINTに適用されます。
  • ストアド プロシージャと埋め込みSQLのCHECKPOINTはデータを返すリクエストです。
  • CHECKPOINTはデータを返すリクエストですが、選択カーソルと関連付けることはできません。
  • checkpoint_labelまたはlabel_host_variableのどちらとして指定するにしても、チェックポイント ラベルは有効なSQL識別子でなければなりません。
  • label_host_variableを指定する場合は、クライアント言語のSQL文字列のルールに従ってホスト変数を指定しなければなりません。また、ホスト変数の先頭にコロンを付ける必要があります。詳細については、<SQLストアド プロシージャおよび埋め込みSQL>を参照してください。
  • host_variable_nameによって識別されるメイン ホスト変数は、INTEGERに準拠した型でなければなりません。
  • CHECKPOINTを動的SQL文として実行することはできません。

CHECKPOINTを実行すると、同期ポイントが生成され、table_nameで指定したジャーナル テーブルに記録されます。

NAMED句を指定した場合は、チェックポイント ラベルが同期ポイントと関連付けられます。同期ポイントを固有に識別する32ビット整数が、ホスト変数指定で定義したメイン ホスト変数内に返されます。

Preprocessor2に対してTRANSACT(2PC) オプションを指定した場合は、CHECKPOINTが無効になります。

例: チェックポイント エントリをジャーナル テーブルに置く

次のリクエストで、チェックポイント登録をジャーナル テーブルに置くことができます。

     CHECKPOINT account_db.jnl_table, NAMED daily_pay_maint;

このリクエストが実行されると、ジャーナル イメージがジャーナル テーブル(jnl_table)に書き込まれるテーブルの、すべての更新活動が終わり、イベント番号が返されます。

daily_pay_maintというラベルを持つ行が、ジャーナル テーブルに置かれます。このラベルは後に、ロールフォワードまたはロールバックの操作で使用できます。