パーティション化されていないNoPIテーブルと列パーティション テーブル(自動圧縮あり/なし)の比較 - 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

このトピックでは、自動圧縮を指定した場合と指定しない場合の非パーティション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>を参照してください。