同じテーブルへのロードと並行したコミット済みデータ読み取りについて - Advanced SQL Engine - Teradata Database

Teradata Vantage™- データベースの管理

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

ユーザーは以下の条件がすべて満たされる場合に、テーブルへのロードと同時にそのテーブルからコミット済みデータを読み取ることができます。

  • テーブルは、ロード分離テーブルである必要があります。

    CREATE TABLEまたはALTER TABLEリクエストでISOLATED LOADINGオプションを使用して、テーブルをロード分離として識別します。例えば、次のようになります。

    CREATE TABLE  ldi_table01, WITH CONCURRENT ISOLATED LOADING FOR ALL (col_a  INT,  col_b  VARCHAR(32));
  • 分離ロードを使用してロードを実行します。
本セクションで後述するように、ISOLATED LOADINGを明示的に指定しなくても分離ロードになる場合があります。分離ロードを確実に使用するには、次のいずれかを実行します。
    • SQLリクエスト(INSERT、UPDATE、MERGE、DELETE)でISOLATED LOADINGオプションを使用します。例えば、次のようになります。
      INSERT WITH CONCURRENT ISOLATED LOADING INTO  ldi_table01  SELECT * FROM src_Tab;

      このメソッドは、ロードするテーブルのグループが1つのデータベース トランザクション内にすべてある場合に動作します。

    • BEGIN ISOLATED LOADING文を使用します。例:
      BEGIN ISOLATED LOADING ON ldi1, ldi2 USING QUERY_BAND
      'LDILoadGroup=Grp1' IN MULTIPLE SESSION;

      このメソッドは、テーブルの関連するグループが1つ以上のセッションで異なるスクリプト、プログラム、またはSQLトランザクションにロードされる場合に動作します。ロード操作を開始するにはBEGIN ISOLATED LOADINGリクエストを使用し、ロードが完了したらEND ISOLATED LOADINGリクエストを使用します。

  • SELECTリクエストでは、LOAD COMMITTEDロック オプションを使用してコミット済みデータをテーブルから同時に読み取る必要があります。例えば、次のようになります。
    LOCKING TABLE  ldi_table01  FOR LOAD COMMITTED SELECT * FROM  ldi_table01;

ロード分離にはTeradata PTをSQL InserterとSQL Selectorオペレータとともに使用できます。これは、これらのオペレータがSQLリクエストを実行するからです。(ロード オペレータとUpdateオペレータは、MLOADXプロトコルが使用された場合にSQLリクエストを実行しますが、各ジョブに使用されるプロトコルはAdvanced SQL Engineによって決まります。ロード オペレータまたはUpdateオペレータがMULTILOADプロトコルを使用する場合、同時並行の読み取りは不可になります。)

DBQLステップ レベル ロギング機能の使用により、ISOLATED LOADINGオプションがロードに使用されるかどうかを判断できます。QryLogStepsVのDMLLoadIDを参照してください。

ISOLATED LOADINGオプションまたはBEGIN ISOLATED LOADINGリクエストを設定しないSQLリクエストを使用してロード分離テーブルでロードを実行する場合、デフォルトは以下のようになります。
  • テーブルが全AMP更新されている際には、コミット済み行での同時読み取りを可能にします。
  • テーブルが全AMP未満の操作で変更される際には、同時読み取りを不可にします。
    トランザクションのすべてのSQLリクエストはトランザクションの最初のリクエストと同じ同時並行性タイプを使用する必要があり、それ以外の場合はトランザクションが失敗します。

CREATE TABLEとALTER TABLE構文または分離ロード文BEGIN/END ISOLATED LOADINGとCHECKPOINT ISOLATED LOADINGの詳細については、<Teradata Vantage™ - SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。SELECT、INSERT、UPDATE、MERGE、DELETE、LOCKINGリクエストの修飾子構文の詳細については、<Teradata Vantage™ - SQLデータ操作言語、B035-1146>を参照してください。

ロックおよびロード分離の詳細については、<Teradata Vantage™- SQLリクエストおよびトランザクション処理、B035-1142>を参照してください。