このトピックでは、自動圧縮を指定した場合と指定しない場合の非パーティションNoPIテーブルと列パーティション テーブルを比較します。
次のCREATE TABLE文により、このトピックで検討するテーブルの最初のバージョンalbum_artistを作成します。
このテスト テーブルalbum_artistの最初のバージョンは、パーティション化されていないNoPIテーブルalbum_artist_ord_nopiとして作成します。
CREATE TABLE album_artist_ord_nopi ( artist CHARACTER(25) NOT NULL, album CHARACTER(50) NOT NULL, release_date DATE NOT NULL, sold INTEGER NOT NULL, producer CHARACTER(40)) NO PRIMARY INDEX;
パーティション化されていないNoPIテーブルalbum_artist_ord_nopiにデータを入れた状態は、次のようになります。
album_artist_ord_nopi | ||||||||
part | HB | row # | 1s & 0s | artist | album | release_date | sold | producer |
0 | n | 2 | 0,1 | Keith Rowe | Harsh | 06-25-1980 | 1,850,000 | Felix Klopotek |
0 | n | 3 | 1,1 | Derek Bailey | Lot ‘74 | 07-04-2010 | 1,000,000 | Derek Bailey |
0 | n | 1 | 1,1 | Albert Ayler | Spiritual Unity | 11-28-1964 | 2,375,000 | Bernard Stollman |
0 | n | 5 | 1,1 | Albert Ayler | Bells | 01-28-1965 | 975,000 | Bernard Stollman |
0 | n | 6 | 1,1 | Albert Ayler | Spirits Rejoice | 06-25-1965 | 3,100,000 | Bernard Stollman |
0 | n | 8 | 1,0 | Pierre Boulez | Pli Selon Pli | 07-04-1973 | 3,250,000 | Paul Myers |
0 | n | 7 | 0,1 | Keith Rowe | Duos for Doris | 04-14-2003 | 2,500,000 | Jon Abbey |
0 | n | 9 | 1,1 | Karlheinz Stockhausen | Sternklang | 11-28-1976 | 750,000 | Dr. Rudolf Werner |
0 | n | 4 | 1,1 | Bix Beiderbecke | Singin’ the Blues | 04-14-1990 | 3,125,000 | Tommy Rockwell |
説明
行ヘッダーの要素 | 内容 |
---|---|
part | コンテナのパーティション番号 |
HB | コンテナのハッシュ バケット番号 |
Row #n | コンテナの行番号 |
1s & 0s | コンテナのプレゼンス ビット |
このテスト テーブルalbum_artistの2番目のバージョンは、列パーティション テーブルalbum_artist_cp_nopi_no_ac(自動圧縮なし)として作成します。
CREATE TABLE album_artist_cp_nopi_no_ac ( artist CHARACTER(25) NOT NULL NO AUTO COMPRESS, album CHARACTER(50) NOT NULL NO AUTO COMPRESS, release_date DATE NOT NULL NO AUTO COMPRESS, sold INTEGER NOT NULL NO AUTO COMPRESS, producer CHARACTER(40) NO AUTO COMPRESS) NO PRIMARY INDEX PARTITION BY COLUMN;
列パーティション テーブルalbum_artist_cp_nopi_no_ac(自動圧縮なし)にデータを入れた列コンテナは、次のようになります。
説明
列コンテナの要素 | 内容 |
---|---|
Part n | コンテナのパーティション番号 |
HB | コンテナのハッシュ バケット番号 |
Row #n | コンテナの行番号 |
1s & 0s | コンテナのプレゼンス ビット |
このテーブルに対してクエリーを行い、コレクションに含まれるKeith Roweのアルバムを調べることができます。
SELECT album FROM album_artist_cp_nopi_no_ac WHERE artist = ‘Keith Rowe’;
このテスト テーブルalbum_artistの3番目のバージョンは、列パーティション テーブルalbum_artist_cp_nopi_ac(自動圧縮あり)として作成します。
CREATE TABLE album_artist_cp_nopi_ac ( artist CHARACTER(25) NOT NULL, album CHARACTER(50) NOT NULL, release_date DATE NOT NULL, sold INTEGER NOT NULL, producer CHARACTER(40)) NO PRIMARY INDEX PARTITION BY COLUMN;
列パーティション テーブルalbum_artist_cp_nopi_acに自動圧縮ありでデータを入れた列コンテナは、次のようになります。
artist | album | release_date | sold | producer | ||||
Part 1-HB-Row # 1 | Part 1-HB-Row # 1 | Part 1-HB-Row # 1 | Part 1-HB-Row # 1 | Part 1-HB-Row # 1 | ||||
1s and 0s | 1s and 0s | 1s and 0s | 1s and 0s | 1s and 0s | ||||
Keith Rowe (2) | Harsh | 06-25-1980 | 1,850,000 | Felix Klopotek | ||||
Derek Bailey | Lot ‘74 | 07-04-1980 | 1,000,000 | Derek Bailey | ||||
Albert Ayler (3) | Spiritual Unity | 11-28-1992 | 2,375,000 | Bernard Stollman | ||||
Pierre Boulez | Bells | 06-25-1980 | 975,000 | Bernard Stollman | ||||
Karlheinz Stockhausen | Spirits Rejoice | 01-28-2000 | 3,100,000 | Bernard Stollman | ||||
Bix Beiderbecke | Pli Selon Pli | 07-04-1980 | 3,250,000 | Paul Myers | ||||
Duos for Doris | 04-14-1992 | 2,500,000 | Jon Abbey | |||||
Sternklang | 11-28-1992 | 750,000 | Dr. Rudolf Werner | |||||
Singin’ the Blues | 04-14-1992 | 3,125,000 | Tommy Rockwell | |||||
… | … | … | … | … | ||||
ランレングス符号化 | 後続スペースの削除 | 値リストの圧縮 | 圧縮なし | null圧縮 |
各コンテナの最下段に、Teradata Databaseが選択して適用した自動圧縮のタイプを記載してあります。
次の図は、列パーティション テーブルのコンテナの自動圧縮によって実現できる領域節約の程度を示しています。この例のどこにも記載していないArtistコンテナの項目から成るそれぞれ30文字の29行(合計870バイト)について、Teradata Databaseは、何種類かの自動圧縮方法を使用して最終サイズ53バイトまでコンテナのデータを圧縮します。縮小率は99.4%です。
このテーブル コンテナに対してクエリーを実行して、アーティストAlbert Aylerのアルバムを調べることができます。
SELECT album FROM album_artist_cp_nopi_ac WHERE artist = ‘Albert Ayler’;
artistコンテナ内の項目はランレングス符号化を使用して圧縮されているため、アーティストAlbert Aylerの項目は1つだけです。しかし、次の図に示したとおり、この項目はAlbert Aylerに対して3種類のアルバムをポイントしています。
album_artistの4番目のバージョンalbum_artist_mlpcp_nopi_acテーブルでは、マルチレベル パーティションとデフォルトの自動圧縮を使用します。
CREATE TABLE album_artist_mlpcp_nopi_ac ( artist CHARACTER(25) NOT NULL, album CHARACTER(50) NOT NULL, release_date DATE NOT NULL, sold INTEGER NOT NULL, producer CHARACTER(40)) NO PRIMARY INDEX PARTITION BY (COLUMN, RANGE_N(release_date BETWEEN DATE '1980-01-01' AND DATE '2000-01-28' EACH INTERVAL '1' YEAR));
列パーティション テーブルalbum_artist_mlpcp_nopi_acに自動圧縮ありでデータを入れたコンテナは、次のようになります。
artist | album | release_date | sold | producer | ||||
Part 1-HB-Row # 1 | Part 1-HB-Row # 1 | Part 1-HB-Row # 1 | Part 1-HB-Row # 1 | Part 1-HB-Row # 1 | ||||
1s and 0s | 1s and 0s | 1s and 0s | 1s and 0s | 1s and 0s | ||||
Keith Rowe | Harsh | 06-25-1980 | 1,850,000 | Felix Klopotek | ||||
Albert Ayler | Bells | 06-25-1980 | 975,000 | Bernard Stollman | ||||
Derek Bailey | Lot ‘74 | 07-04-1980 | 1,000,000 | Derek Bailey | ||||
Pierre Boulez | Pli Selon Pli | 07-04-1980 | 3,250,000 | Paul Myers |
artist | album | release_date | sold | producer | ||||
Part 101-HB-Row # 1 | Part 201-HB-Row#1 | Part 301-HB-Row # 1 | Part 401-HB-Row # 1 | Part 501-HB-Row # 1 | ||||
1s and 0s | 1s and 0s | 1s and 0s | 1s and 0s | 1s and 0s | ||||
Keith Rowe | Duos for Doris | 04-14-1992 | 2,500,000 | Jon Abbey | ||||
Bix Beiderbecke | Singin’ the Blue | 04-14-1992 | 3,125,000 | Tommy Rockwell | ||||
Albert Ayler | Spiritual Unity | 11-28-1992 | 2,375,000 | Bernard Stollman | ||||
Karlheinz Stockhausen | Sternklang | 11-28-1992 | 750,000 | Dr. Rudolf Werner |
artist | album | release_date | sold | producer | ||||
Part 601-HB-Row # 1 | Part 201-HB-Row#1 | Part 301-HB-Row # 1 | Part 401-HB-Row # 1 | Part 501-HB-Row # 1 | ||||
1s and 0s | 1s and 0s | 1s and 0s | 1s and 0s | 1s and 0s | ||||
Albert Ayler | Spirits Rejoice | 01-28-2000 | 3,100,000 | Bernard Stollman |
説明
列コンテナの要素 | 内容 |
---|---|
Part n | コンテナのパーティション番号 |
HB | コンテナのハッシュ バケット番号 |
Row #n | コンテナの行番号 |
1s & 0s | コンテナのプレゼンス ビット |
このテーブル コンテナに対してクエリーを実行して、どのアーティストが1992年にアルバムをリリースしたか、およびそのアルバム名を調べることができます。
SELECT artist, album, EXTRACT(YEAR FROM release_date) AS year FROM album_artist_mlpcp__nopi_ac WHERE year = 1992;
album_artistの5番目のバージョンalbum_artist_mccp_nopi_noacでは、自動圧縮なしの複数列コンテナを作成します。複数列コンテナは、release_date列、sold列、およびproducer列に対して定義します。
CREATE TABLE album_artist_mccp_nopi_noac ( artist CHARACTER(25) NOT NULL, album CHARACTER(50) NOT NULL, (release_date DATE NOT NULL, sold INTEGER NOT NULL, producer CHARACTER(40))) NO PRIMARY INDEX PARTITION BY COLUMN NO AUTO COMPRESS;
このテーブルの3つのコンテナは、次のようになります。
artist | album | release_date | sold | producer | ||
Part 1-HB-Row # 1 | Part 2-HB-Row # 1 | Part 3-HB-Row # 1 | ||||
1s and 0s | 1s and 0s | 1s and 0s | ||||
Keith Rowe | Harsh | 06-25-1980 | 1,850,000 | Felix Klopotek | ||
Derek Bailey | Lot ‘74 | 07-04-1980 | 1,000,000 | Derek Bailey | ||
Albert Ayler | Spiritual Unity | 11-28-1992 | 2,375,000 | Bernard Stollman | ||
Albert Ayler | Bells | 06-25-1980 | 975,000 | Bernard Stollman | ||
Albert Ayler | Spirits Rejoice | 01-28-2000 | 3,100,000 | Bernard Stollman | ||
Pierre Boulez | Pli Selon Pli | 07-04-1980 | 3,250,000 | Paul Myers | ||
Keith Rowe | Duos for Doris | 04-14-1992 | 2,500,000 | Jon Abbey | ||
Karlheinz Stockhausen | Sternklang | 11-28-1992 | 750,000 | Dr. Rudolf Werner | ||
Bix Beiderbecke | Singin’ the Blues | 04-14-1992 | 3,125,000 | Tommy Rockwell |
次のCREATE TABLE文では、album_artistテーブルの6番目のバージョンalbum_artist_hybrid_row_col_noacを作成します。ROW記憶領域とCOLUMN記録領域の混成方式で、自動圧縮なしです。artist列とalbum列については個別のCOLUMNパーティションがあり、release_date列、sold列、producer列、およびlyric列については1つのグループにまとめたROWパーティションがあります。
CREATE TABLE album_artist_hybrid_row_col_noac ( artist CHARACTER(35) NOT NULL NO AUTOCOMPRESS, album CHARACTER(50) NOT NULL NO AUTOCOMPRESS, ROW (release_date DATE NOT NULL NO AUTOCOMPRESS, sold INTEGER NOT NULL NO AUTOCOMPRESS, producer CHARACTER (40) NO AUTO COMPRESS, lyric LONG VARCHAR)) NO PRIMARY INDEX PARTITION BY COLUMN;
2つのコンテナと、1つの複数列副行記憶領域パーティションは、次のようになります。
artist | album | |||||||||
Part 1-HB-Row # 1 | Part 2-HB-Row # 1 | |||||||||
1s and 0s | 1s and 0s | Part | HB | Row # | release_date | sold | producer | lyric | ||
Keith Rowe | Harsh | 0 | n | 2 | 06-25-1980 | 1,850,000 | Felix Klopotek | null | ||
Derek Bailey | Lot ‘74 | 0 | n | 3 | 07-04-1980 | 1,000,000 | Derek Bailey | null | ||
Albert Ayler | Spiritual Unity | 0 | n | 1 | 11-28-1992 | 2,375,000 | Bernard Stollman | null | ||
Albert Ayler | Bells | 0 | n | 5 | 06-25-1980 | 975,000 | Bernard Stollman | null | ||
Albert Ayler | Spirits Rejoice | 0 | n | 6 | 01-28-2000 | 3,100,000 | Bernard Stollman | null | ||
Pierre Boulez | Pli Selon Pli | 0 | n | 8 | 07-04-1980 | 3,250,000 | Paul Myers | null | ||
Keith Rowe | Duos for Doris | 0 | n | 7 | 04-14-1992 | 2,500,000 | Jon Abbey | null | ||
Karlheinz Stockhausen | Sternklang | 0 | n | 9 | 11-28-1992 | 750,000 | Dr. Rudolf Werner | null | ||
Bix Beiderbecke | Singin’ the Blues | 0 | n | 4 | 04-14-1992 | 3,125,000 | Tommy Rockwell | null |
プライマリ インデックスの付いたテーブル、パーティション テーブル、パーティション化されていないNoPIテーブル、およびさまざまな方法でパーティション化された列パーティション テーブルから同じデータを読み取るために必要なI/Oの数の比較例や、列パーティション テーブルおよび結合インデックスのパフォーマンスに関する問題については、<Teradata Vantage™ - データベースの設計、B035-1094>を参照してください。