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とtype_and_indexの組み合わせによりサブテーブルを固有に識別します。
構文要素 |
説明 |
---|---|
table_unique | 操作の対象となるテーブルの固有識別子。 テーブルは、次の2つの方法のいずれかで固有に識別できます。
|
= | 保存された最新の値をtable_uniqueに使用することを指定します。 |
type_and_index | テーブルを構成するサブテーブルのグループ内でサブテーブルを固有に識別します。type_and_indexは、サブテーブルのタイプと個別のサブテーブル自体の両方を識別します。 |
type_and _indexの構文は以下のとおりです。
{ type [ / index [ / variant ] ] | number }
構文要素 | 説明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
type | サブテーブルのタイプ。 typeは、次のいずれかを指定します。
|
||||||||||||
index | 検査するインデックス サブテーブル。 インデックス サブテーブルの値を指定しない場合、デフォルトでデータ サブテーブルが使用されます。 インデックス1は最初のセカンダリ インデックスを表わします。 インデックス2は2番目のセカンダリ インデックスを表わし、以下同様です。 indexは、次のいずれかを指定します。
|
||||||||||||
variant | 可能なサブテーブル variantは、次のいずれかを指定します。
|
||||||||||||
number | サブテーブルのタイプ(ヘッダー、基本データ、またはフォールバック データ)、物理行を配列する場合に使用するインデックス(基本データ インデックスまたはセカンダリ インデックスの1つ)、およびvariant(変形)を内部的に表わす単一の数値。テーブル ヘッダーの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
テーブルのクラス
Vantageは次の5つのテーブルのクラスを区別します。アクションのSCOPEパラメータを定義するときに、テーブルの区分を指定することができます。
テーブルのタイプ | 説明 |
---|---|
永久ジャーナル(PJ)テーブル | システム再始動を行なってもそのまま保存されるテーブルですが、これにはユーザーの目に見えるデータは含まれていません。 それぞれのPJテーブルには、Vantageにより内部的に生成されるデータが含まれます。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で指定されます。
start_rid_spec [ TO end_rid_spec ]
入力という目的では、ridspecの必須およびオプションのコンポーネントは、物理行を含むテーブルがパーティション化されているかどうかによって決まります。
テーブルのタイプ | Ridspecの構文 |
---|---|
パーティション | partitioned_ridspec:{ row_partition | = } [ { row_hash | = } [ row_unique | = ] ] |
非パーティション | nonpartitioned_ridspec:{ partitioned_ridspec | [ row_partition | = ] { row_hash | = } [ row_unique | = ] } |
構文要素 | 説明 |
---|---|
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ファイル システムと物理行の詳細については、Teradataファイル システムを参照してください。
テーブルの行構造の詳細は、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。
vproc番号
Ferretでは、vproc番号(vproc_number)をSCOPEコマンドで使用することにより、ユーティリティのアクション(再構成、またはディスク領域の表示など)の実行対象となるAMP、またはAMPの範囲を指定します。
有効なAMP vprocは、0~16199の範囲の数値です。
マップの名前
マップには、1つ以上のAMP vprocが含まれます。Ferret SCOPEコマンドでマップ名を指定する場合は、名前を二重引用符で囲む必要があります。対象範囲は、Ferretの対象範囲を指定したマップに含まれる個々のvprocにした場合と実質的に同じです。