Ferretパラメータの使用 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ - データベース ユーティリティ

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Published
2019年3月
Language
日本語
Last Update
2019-10-29
dita:mapPath
ja-JP/qxr1512078764562.ditamap
dita:ditavalPath
ja-JP/qxr1512078764562.ditaval
dita:id
B035-1102
Product Category
Software
Teradata Vantage

Ferretの構文図におけるparameterという変数には、マルチトークン パラメータや、10進数および16進数の数値入力を含む、さまざまなタイプのパラメータが含まれます。

マルチトークン パラメータ

マルチトークン パラメータ(3つの値で入力されるサブテーブル識別子など)は、個々のトークンを1つ以上のスペースで区切って、単一の行に入力します。マルチトークン パラメータは、ハイフンで区切って入力することもできます。

例えば、サブテーブル識別子として以下のいずれかを受け入れることができます。

0 200 0
0-200-0

パラメータと パラメータ、または パラメータとコマンドは、空白またはカンマで区切ることができます。コマンド オプション(cmdoption)を指定する場合は、それをコマンド(cmd)と同じ行に入力する必要があります。

数値入力

数値は10進または16進のいずれかの形式で入力することができます。データ入出力用のデフォルトの基数は、入出力に対する基数の設定によります。

  • 入力の基数が10進の場合、数値入力は10進数値として解釈されます。例えば、45と入力されると、45という値として解釈します。
  • 入力の基数が16進の場合、数値入力は16進数値として解釈されます。例えば、45と入力されると、69という値として解釈します。

基数の初期設定は、入出力どちらも16進です。基数の設定については、RADIXコマンドの説明を参照してください。

次の特殊な数値形式の表記規則を使用すると、基数の設定に関係なく、入力した値を10進または16進として強制的に解釈させることができます。

  • 10進値は、0iまたはi接頭辞を追加するか、小数点接頭辞を追加することによって表わすことができます。
    0i45 45. 0I45
  • 16進値は、0xまたはx接頭辞を追加するか、h接頭辞を追加することによって表わすことができます。先行ゼロはオプションです。
    0x2D X2D 2Dh 002DH

有効な数値の範囲は、符号なしの16ビット値で0~65535 (0x0~0xFFFF)です。ただし、32ビットの整数に/Lまたは/Wを使ってパッチをあてている場合は除きます。この場合の有効な範囲は、0~4,294,967,295 (0x0~0xFFFFFFFF)です。

1行に2つの数値を指定する場合は、値を空白またはカンマで区切る必要があります。

サブテーブル識別子(tid)の指定

コマンドはサブテーブルを対象とし、テーブルを対象としません。テーブルはサブテーブルの集まりで、サブテーブルは物理行の集まりです。各サブテーブルには、特定のデータ型を格納する物理行があります。 例えば、基本およびフォールバック データ サブテーブルにはデータ行があり、基本およびフォールバック インデックス サブテーブルにはインデックス行があります。テーブル ヘッダー サブテーブルの物理行には、テーブル メタデータが含まれます。

各サブテーブルは、サブテーブル識別子(tid)で識別されます。tidは2つの部分で構成されます。最初の部分は、サブテーブルが属しているテーブルを識別します。同じテーブルの一部であるすべてのサブテーブルのtidには、同じテーブル識別子が含まれます。2番目の部分は、テーブルを構成するサブテーブルの1つを識別し、サブテーブルのタイプを示します。

tidは次のように定義されます。



table_uniquetype_and_indexの組み合わせによりサブテーブルを固有に識別します。

構文要素

説明

table_unique 処理の対象となるテーブルの固有識別子。

テーブルは、次の2つの方法のいずれかで固有に識別できます。

  1. テーブルが属するデータベースの名前とテーブル名をピリオドで区切って指定します。名前は個別に、またはまとめて区切る必要があります。以下は有効な形式です。
    • " database_name . table_name"
    • " database_name "." table_name "
    • ' database_name . table_name'
    • ' database_name '.' table_name'
  2. テーブルの固有の数値の識別子を指定します。これは、スペースで区切られた2つの数値で構成されます。テーブル識別子は、TABLEIDコマンドで返される最初の2つの数値で構成されます。この2つの数値は、テーブルを構成するすべてのサブテーブルに共通です。
    入力番号の形式は基数の現在の設定によって異なり、この設定はRADIXコマンドで表示されます。
= table_uniqueに保存された最新の値を使用するかどうかを指定します。
type_and_index テーブルを構成するサブテーブルのグループ内でサブテーブルを固有に識別します。type_and_indexは、サブテーブルのタイプと個別のサブテーブル自体の両方を識別します。

type_and _indexの構文は以下のとおりです。



構文要素 説明
type サブテーブルのタイプ。
typeは、次のいずれかを指定します。
説明
* このテーブルのすべてのサブテーブル
H テーブル ヘッダー サブテーブル

テーブル ヘッダー サブテーブルには1行しかなく、セカンダリ インデックスや作業サブテーブルもないため、H型の後に続くすべてのインデックスとvariant(変形)の指定は無視されます。

P プライマリ データ サブテーブル
F number numberによって指定するフォールバック データ サブテーブル。デフォルト値は1です。
F * すべてのフォールバック サブテーブル
index 検査するサブテーブル。インデックス サブテーブルの値が指定されていない場合は、デフォルトでデータ サブテーブルが使用されます。Index 1が最初のセカンダリ インデックス、Index 2が2番目のセカンダリ インデックス、のようになります。

indexは、次のいずれかを指定します。

indexの値 説明
number X numberを指定する代わりに使用できるセカンダリ インデックス。numberを単独で入力する場合は、4の倍数でなければならず、次のように解釈されます。
  • 0は、X0を入力した場合と同じです。
  • 4は、X1を入力した場合と同じです。
  • 8は、X2を入力した場合と同じです。
  • 12は、X3を入力した場合と同じです。
上記のようになります。
* テーブルのすべてのインデックス
D プライマリ データ インデックス(X0または0と同じ)
X number numberによって指定するセカンダリ インデックス。デフォルト値は1です。
X * 0で始まる、すべてのセカンダリ インデックス
variant 可能なサブテーブル
variantは、次のいずれかを指定します。
variantの値 説明
* 可能なすべての変形サブテーブル。
0 variant値が指定されていない場合、デフォルトが使用されます。
1 SortまたはTable Modify操作中の値。
2 未使用。
3 未使用。
number サブテーブルのタイプ(ヘッダー、プライマリ データ、またはフォールバック データ)、物理行を順序付けするときに使用するインデックス(プライマリ データ インデックスまたはセカンダリ インデックスの1つ)、およびバリアントを内部的に表わす単一番号。テーブル ヘッダーのtype_and_index番号は、ゼロです。これらの番号の例を以下に示します。

次のテーブルに、type_and _indexフィールドの例を示します。

サブテーブルの説明 番号 型/インデックス 型/インデックス/変数
テーブル ヘッダー 0 H    
プライマリ データ サブテーブル 1024 (0x0400) P P/D  
最初のセカンダリ インデックス 1028 (0x0404)   P/X1  
最初のフォールバック テーブル 2048 (0x0800) F1 F1/D  
3番目のフォールバック テーブルの2番目のセカンダリ インデックス 4104 (0x1008)   F3/X2  
すべてのプライマリ サブテーブル     P/*  
すべてのプライマリ セカンダリ インデックス     P/X*  
すべてのフォールバック サブテーブル   F*    
このテーブルのすべてのサブテーブル   *    
最初のセカンダリ インデックスのソート テーブル 1029 (0x0405)     P/X1/1
最初のセカンダリ インデックスのソート中の、両方のテーブル       P/X1/ *

例えば、データベースMYDBに含まれるテーブルT4のtable_numberが「0 1198」であるとします。また、入力が16進形式で受け入れられるとします。

T4テーブルのプライマリ サブテーブルのtidとして、以下の例が有効です。

  • "MYDB.T4" 400
  • "MYDB.T4" 1024.
  • "MYDB"."T4" P
  • u 'MYDB'.'T4' 400 h
  • 0 1198 400
  • 0 1198 P

テーブルのクラス

Teradata Databaseは次の5つのテーブルのクラスを区別します。アクションのSCOPE パラメータを指定するときに、テーブルの区分を指定することができます。

テーブルのタイプ 説明
永久ジャーナル(PJ)テーブル システム再始動を行なってもそのまま保存されるテーブルですが、これにはユーザーの目に見えるデータは含まれていません。

それぞれのPJテーブルには、Teradata Databaseにより内部的に生成されるデータが含まれます。PJデータは通常、ジャーナル処理されたテーブルを、所定のチェックポイントの状態まで回復するために使用されます。これは、トランザクションをテーブルのアーカイブ コピーからロールフォワード、またはロールバックすることによって行ないます。

永久テーブル 実データを含んだテーブルで、システムの再始動後も残ることができます。
一時テーブル グローバル一時テーブルまたは揮発テーブルとして存在できるテーブルで、次のように定義されます。
  • グローバル一時テーブルは、それらが使用されるSQLセッションの存続期間だけ存在します。
  • 揮発テーブルはメモリ内に存在し、システムを再始動すると失われます。後述のスプール テーブルと同等に扱われます。
スプール テーブル 非永久データが含まれるテーブルです。これは、持続する範囲に応じていくつかのクラスに分けられます。
中間結果スプール テーブルには、単一のSQL問合わせ処理中の一時的な結果が保持されます。これはその処理の期間中しか持続しません。応答スプール テーブルには、問合わせからの最終的な応答が保持されます。限られた数の応答スプールを、同一セッション内のその後の問合わせにも持続させることができます(オプション)。スプール テーブルは次の場合に破棄されます。
  • 通常は、そのスプールが必要なくなったとき。
  • トランザクションのアボートまたはセッションのログオフに伴う、特定のリソースのクリーンアップの一環として。
  • システム再始動の度に行なわれる、一般的なリソースのクリーンアップの一環として。
  • 揮発表の行はスプール領域に置かれ、トランザクションの最後またはセッションの最後に(表オプションまたはDROP TABLE文に応じて)破棄されます。
  • 揮発表定義はメモリ内に存在し、システムを再始動すると失われます。
持続スプール テーブル スプール テーブルと同等に扱われ、システムを再始動しても残ります。

テーブルの各クラスに関連した属性はシステム性能に影響を与えることがあります。属性はそれぞれ個別に設定され、テーブルの各クラスはそれぞれ異なる目的で使用されるからです。

例えば、永久テーブルとPJテーブルだけをパックしておくこともできます。それで、PACKDISKコマンドのSCOPEを定義する際に、これらのテーブルを指定することもできます。

行と行範囲

すべての物理行は行IDによって一意に識別されます。行IDの指定はridspecまたはrowspecとも呼ばれ、パーティション番号、行ハッシュまたはハッシュ バケット番号、および固有性値を含む値です。1つの物理行で最大16バイトまで保持できます。
  • パーティション番号は、テーブルに定義されるパーティションの番号が65535までの場合は2バイトとして格納され、これよりも大きい場合は8バイトとして格納されます。テーブルがパーティション化されない場合、行IDにはパーティション指定のための領域は予約されません。ゼロ値を設定すると、テーブルはパーティション化されません。
  • 行IDの残りの部分の指定は、テーブルにプライマリ インデックスが含まれているかどうかによって異なります。
    • PIテーブルには、4バイトの行ハッシュ値と、さまざまな物理行の行ハッシュ シノニムが存在する場合に固有性を強制するための4バイトの固有性値があります。
    • プライマリ インデックスを持たないテーブル(NoPIテーブル)および基本AMPインデックスを持つテーブル(PAテーブル)には、16ビットまたは20ビットのハッシュ バケット値と44ビットの固有性値があります。16ビットのハッシュ バケット値を使用するシステムの場合、ハッシュ バケット値と固有性値の間の4ビットは未使用です。
      RowIDの残りの部分は2つの4バイト値として扱われ、hashおよびuniqフィールドとして表わされます。
      hash0 hash1 uniq0 uniq1
      ----- ----- ----- ----- 
      FFA9  CB78  0000  0002
                  

      表示または操作されるNoPIテーブルおよびPAテーブルの場合、hash0とhash1は実際には20ビットのハッシュ バケット値と上位12ビットの固有性値を表わし、uniq0とuniq1は下位32ビットの固有性値を表わします。NoPIテーブルとPAテーブルの詳細については、<Teradata Vantage™ SQLデータ定義言語-構文規則および例、B035-1144>を参照してください。

行の範囲はridrangeとも呼ばれ、開始行と終了行のridspecで指定されます。



入力という目的では、ridspecの必須およびオプションのコンポーネントは、物理行を含むテーブルがパーティション化されているかどうかによって決まります。

テーブルのタイプ Ridspecの構文
パーティション


非パーティション


構文要素 説明
row_partition 物理行のパーティション番号。パーティション番号は単一の数値で、ファイル システムによって使用される内部パーティション番号です。値は0〜9223372036854775807 (16進表記で0〜7FFFFFFFFFFFFFFF)でなければなりません。

複数レベルでパーティション化されるテーブルでは、各物理パーティションは、パーティション列の特定の値セットに対するPARTITION BY句のパーティション式すべての組み合わせから生じます。これにより、単一の固有な組み合わせパーティション番号が提供されます。この番号は、内部パーティション番号にマッピングされます。パーティション範囲がパーティション レベルに対して削除または追加された場合、パーティションの組み合わせパーティション番号は変更されることがありますが、内部パーティション番号は変更されません。

非パーティション テーブルの行の場合、パーティション番号は(指定する場合は)ゼロでなければならず、ridspecでは省略できます。

row_hash 物理行の行ハッシュ値。行ハッシュは、物理行が分散されるAMPを決定します。行ハッシュは2つの数値で構成され、通常は出力画面の列見出しhash0およびhash1に表示されます。
start_rid_specの場合 :
  • row_hashは、デフォルトで0x0000 0x0000になります。
end_rid_specの場合 :
  • row_hashのデフォルトは、start_rid_specで指定されているrow_hashの値になります。start_rid_specrow_hashの値が指定されていない場合、end_rid_specでのrow_hashは、デフォルトで0xFFFF 0xFFFFになります。
row_uniq 物理行を一意に識別するために行ハッシュ値とともに使用されるシステム生成の固有性値。固有性値は2つの数値で構成され、通常は出力画面の列見出しu0およびu1に表示されます。
start_rid_specの場合 :
  • row_uniqを省略し、end_rid_specを指定しないと、row_hashのすべての行が選択されます。
  • row_uniqを省略し、end_rid_specを指定すると、row_uniqは、デフォルトで0x0000 0x0000になります。
end_rid_specの場合 :
  • row_uniqのデフォルトは、start_rid_specで指定されているrow_uniqの値になります。start_rid_specrow_uniqの値が指定されていない場合、end_rid_specでのrow_uniqは、デフォルトで0xFFFF 0xFFFFになります。
= プログラムは、最近保存されたrow_partitionrow_hash、またはrow_uniqの値を使用します。

row_partitionrow_hash、およびrow_uniqに指定された最新の値が保存されます。start_rid_specおよびend_rid_specrow_partitionrow_hash、またはrow_uniqに対しては個別の値が格納されます。保存されたstart_rid_specまたはend_rid_specの値がパーティション テーブルに使用されているにもかかわらず、現在のコマンドで参照されているテーブルがパーティション化されていない場合、およびその逆の場合、エラーが報告されます。

Teradata Databaseファイル システムと物理行の詳細については、ファイル システムを参照してください。

テーブルの行構造の詳細は、<Teradata Vantage™ データベース設計、B035-1094>を参照してください。

vproc番号

Ferretでは、vproc番号(vproc_number)をSCOPEコマンドで使用することにより、ユーティリティのアクション(再構成、またはディスク領域の表示など)の実行対象となるAMP、またはAMPの範囲を指定します。

有効なAMP vprocは、0~16199の範囲の数値です。

マップの名前

マップには、1つ以上のAMP vprocが含まれます。Ferret SCOPEコマンドでマップ名を指定する場合は、名前を二重引用符で囲む必要があります。対象範囲は、Ferretの対象範囲を指定したマップに含まれる個々のvprocにした場合と実質的に同じです。