列パーティションのCOLUMNオプション - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 詳細トピック

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
17.00
Published
2020年6月
ft:locale
ja-JP
ft:lastEdition
2021-03-30
dita:mapPath
ja-JP/jpx1556733107962.ditamap
dita:ditavalPath
ja-JP/jpx1556733107962.ditaval
dita:id
B035-1184
Product Category
Software
Teradata Vantage

列パーティションの一般的な指針

列パーティションのCOLUMNの指定に関するルールを以下にまとめます。
  • 1つの列パーティションで1つの列を複数回指定することはできません。
  • 1つの列を複数の列パーティションで指定することはできません。
  • 列パーティション値は、特定のテーブルの行の列パーティションに含まれている各列の値で構成されます。
  • COLUMN形式もROW形式も明示的に指定しなかった、またはSYSTEM形式を明示的に指定したために、COLUMN形式またはROW形式がシステム設定形式になっている場合、データベースは、列パーティションの列パーティション値のサイズや他の要素(列パーティションの列パーティション値が固定長か可変長か、列パーティションが単一列パーティションか複数列パーティションかなど)に基づいて形式を選択します。

    原則として、狭い列パーティションにはCOLUMN形式、広い列パーティションにはROW形式が割り当てられます。

    データベースは、約256バイト以下のサイズの列パーティションを狭い列パーティションと見なします。そうでないサイズの列パーティションは、広い列パーティションと見なされます。

    データベースは、列パーティションの可変長列のサイズを「(その列の最大長/3)+2」の値とし て見積もります。この値は、他の要因によって小さくなったり大きくなったりすることもあります。より適切な値があれば、その値に変更される可能性もあります。

    このサイズは、コンテナに収まる非圧縮列パーティション値の数に基づいて選択されるので、コンテナで認められている最大サイズによっても左右されます。

    列パーティション値の数が大きい場合は、サイズを小さくするために、それらの値をコンテナにパックして行ヘッダーを圧縮できます。その圧縮のメリットは、コンテナに値をパックし、コンテナから値を取り出す処理がもたらす悪影響を補って余りあるといえます。

    データベースが列パーティションで選択する形式を確認するには、HELP COLUMNリクエストを使用するか、該当するデータ ディクショナリ ビューで情報を取得します。

  • 列パーティションの形式はCOLUMN、ROW、またはSYSTEMのいずれかになり、これらの形式を組み合わせることはできません。列パーティション テーブルまたは列パーティション結合インデックスの各列パーティションを別々の形式にすることは可能です。列パーティション テーブルの各列パーティションは、すべてCOLUMN形式にすることも、すべてROW形式にすることも、すべてSYSTEM形式にすることも、これらの形式の組み合わせにすることもできます。

PARTITION BY句でのCOLUMNのグループ化の使用

PARTITION BY句のCOLUMNで列グループを指定する操作に関するルールを以下にまとめます。

状況 結果 それ以外の場合
テーブルまたは結合インデックスのPARTITION BY句でCOLUMNを指定する場合 テーブルまたは結合インデックスは、定義によって列パーティション化されます。  
MODIFY NO PRIMARYを指定し、PARTITION BY句を指定する場合 COLUMNパーティション レベルを指定する必要があります。 データベースはリクエスト側にエラーを返します。
列グループ リストで、非グループ化およびグループ化の列パーティションを指定する場合 データベースは、非グループ化およびグループ化の列パーティションごとに列パーティションを定義します。  
COLUMN句に列グループ化を指定しない場合 データベースは、CREATE TABLEリクエストの列リスト、またはCREATE JOIN INDEXリクエストの選択リストで指定されているそれぞれの列と列グループで列パーティションを定義します。  
列グループの指定でALL BUTを指定する場合 データベースは、列グループ リストで指定されていない列ごとに単一列パーティションを定義し、その列パーティションに自動圧縮を設定し、列の特性に応じてシステム設定形式COLUMNまたはROWを割り当てます。  
列グループの指定でALL BUTを指定しない場合 データベースは、列グループ リストで指定されていないすべての列を1つの列パーティションにグループ化し、その列パーティションに自動圧縮を設定し、列の特性に応じてシステム設定形式COLUMNまたはROWを割り当てます。  
列パーティションにCOLUMNを指定する場合 データベースは、1つ以上の列パーティション値をコンテナと呼ばれる1つの物理行にCOLUMN形式で格納します。  
列パーティションにROWを指定する場合 データベースは、1つの列パーティション値だけを1つの物理行に副行として格納します。副行形式つまりROW形式は、行が格納される標準的な方式です。  
列にSYSTEMを指定する場合 データベースは、列パーティションに含まれる残りの列セットの列パーティション値のサイズや他の要素(列パーティションの列パーティション値が固定長か可変長かなど)に基づいて、列パーティション形式を設定します。
データベースは一般に、狭い列パーティションにはCOLUMN形式を、広い列パーティションにはROW形式が割り当てられるようにします。
 
データベースによって列パーティションの形式が設定されるようにする場合 SYSTEMを指定します。 列パーティションの形式をはっきりさせたい場合は、COLUMN形式またはROW形式を明示的に指定できます。
列パーティションにAUTO COMPRESSまたはNO AUTO COMPRESSを明示的に指定する場合 データベースは、その指定に従って物理行に自動圧縮を適用するかどうかを決定します。

データベースは、ユーザー指定の圧縮を適用し、さらに、COLUMN形式の列パーティションの場合は、行ヘッダーの圧縮を適用します。

 
データベースが列パーティションで選択する形式を確認したい場合 HELP COLUMNリクエストを使用するか、該当するデータ ディクショナリ ビューを使用して情報を取得します。  
列パーティションにCOLUMN形式もROW形式も指定しない場合、またはSYSTEMを指定する場合 データベースは、列の特性に基づいてCOLUMN形式を使用するか、ROW形式を使用するかを決定します。