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_uniqueとtype_and_indexの組み合わせによりサブテーブルを固有に識別します。
構文要素 |
説明 |
---|---|
table_unique | 処理の対象となるテーブルの固有識別子。 テーブルは、次の2つの方法のいずれかで固有に識別できます。
|
= | table_uniqueに保存された最新の値を使用するかどうかを指定します。 |
type_and_index | テーブルを構成するサブテーブルのグループ内でサブテーブルを固有に識別します。type_and_indexは、サブテーブルのタイプと個別のサブテーブル自体の両方を識別します。 |
type_and _indexの構文は以下のとおりです。
構文要素 | 説明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
type | サブテーブルのタイプ。 typeは、次のいずれかを指定します。
|
||||||||||||
index | 検査するサブテーブル。インデックス サブテーブルの値が指定されていない場合は、デフォルトでデータ サブテーブルが使用されます。Index 1が最初のセカンダリ インデックス、Index 2が2番目のセカンダリ インデックス、のようになります。 indexは、次のいずれかを指定します。
|
||||||||||||
variant | 可能なサブテーブル variantは、次のいずれかを指定します。
|
||||||||||||
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問合わせ処理中の一時的な結果が保持されます。これはその処理の期間中しか持続しません。応答スプール テーブルには、問合わせからの最終的な応答が保持されます。限られた数の応答スプールを、同一セッション内のその後の問合わせにも持続させることができます(オプション)。スプール テーブルは次の場合に破棄されます。
|
持続スプール テーブル | スプール テーブルと同等に扱われ、システムを再始動しても残ります。 |
テーブルの各クラスに関連した属性はシステム性能に影響を与えることがあります。属性はそれぞれ個別に設定され、テーブルの各クラスはそれぞれ異なる目的で使用されるからです。
例えば、永久テーブルとPJテーブルだけをパックしておくこともできます。それで、PACKDISKコマンドのSCOPEを定義する際に、これらのテーブルを指定することもできます。
行と行範囲
- パーティション番号は、テーブルに定義されるパーティションの番号が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の場合 :
end_rid_specの場合 :
|
row_uniq | 物理行を一意に識別するために行ハッシュ値とともに使用されるシステム生成の固有性値。固有性値は2つの数値で構成され、通常は出力画面の列見出しu0およびu1に表示されます。 start_rid_specの場合 :
end_rid_specの場合 :
|
= | プログラムは、最近保存されたrow_partition、row_hash、またはrow_uniqの値を使用します。 row_partition、row_hash、およびrow_uniqに指定された最新の値が保存されます。start_rid_specおよびend_rid_spec、row_partition、row_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にした場合と実質的に同じです。