LoginSignup
3
0

More than 1 year has passed since last update.

ブロックレベル圧縮(BLC)の方法と効果検証

Last updated at Posted at 2020-08-30

目的

ブロックレベル圧縮(BLC)の効果を検証

前提

ブロックレベル圧縮(BLC)に必要な設定

  1. DBS制御フィールド BlockLevelCompression の設定
  2. 表のBLOCKCOMPRESSIONオプション
  3. データ挿入時のクエリーバンド

手順(概要)

  1. 空テーブルt3, t4を作成
  2. 同様のデータをt3:圧縮無、t4:圧縮有で挿入
  3. 容量を比較

手順(詳細)

空テーブルt3, t4を作成

Create table t3(
c1 integer,
c2 char(1),
c3 char(4),
c4 varchar(10),
c5 varchar(30),
c6 date format 'YYYY-MM-DD',
c7 integer
) unique primary index (c1);

Create table t4(
c1 integer,
c2 char(1),
c3 char(4),
c4 varchar(10),
c5 varchar(30),
c6 date format 'YYYY-MM-DD',
c7 integer
) unique primary index (c1);

t3, t4の設定を確認

select TableName, BlockCompression, BlockCompressionLevel from dbc.tablesV where TableName in ('t3', 't4');

TableName                    BlockCompression  BlockCompressionLevel
---------------------------  ----------------  ---------------------
t3                           DEFAULT           DEFAULT
t4                           DEFAULT           DEFAULT

BlockCompression:DEFAULT

DBS制御設定のDefaultTableModeに設定されたブロック レベル圧縮がテーブルに使用されます。

DBS制御設定を確認(圧縮グループ)

display compression;

DBS Control Record - Compression (Block Level) Fields:


    1.  BlockLevelCompression                = ON
    2.  (Reserved for future use)
    3.  CompressSpoolDBs                     = NEVER       (ALWAYS, NEVER, IFNOTCACHED)
    4.  (Reserved for future use)
    5.  CompressMloadWorkDBs                 = NEVER       (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
    6.  CompressPJDBs                        = NEVER       (ALWAYS, NEVER)
    7.  MinDBSectsToCompress                 = 32
    8.  MinPercentCompReduction              = 20%
    9.  CompressionAlgorithm                 = ZLIB        (ZLIB, ELZS_H, ELZS_S)
   10.  CompressionLevel                     = 1           (1-9; Default value = 1)
   11.  (Reserved for future use)
   12.  UncompressReservedSpace              = 5%
   13.  (Reserved for future use)
   14.  CompressPermPrimaryDBs               = UNLESSQBNO  (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
   15.  CompressPermFallbackDBs              = UNLESSQBNO  (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
   16.  CompressPermPrimaryCLOBDBs           = UNLESSQBNO  (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
   17.  CompressPermFallbackCLOBDBs          = UNLESSQBNO  (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
   18.  CompressGlobalTempPrimaryDBs         = NEVER       (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
   19.  CompressGlobalTempFallbackDBs        = NEVER       (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
   20.  CompressGlobalTempPrimaryCLOBDBs     = NEVER       (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
   21.  CompressGlobalTempFallbackCLOBDBs    = NEVER       (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)
   22 - 31  (Reserved for future use)
   32.  EnableTempBLC                        = FALSE       (TRUE, FALSE)
   33.  DefaultTableMode                     = MANUAL      (AUTOTEMP, MANUAL, ALWAYS, NEVER)
   34.  TempBLCThresh                        = COLD        (COLD, WARM, HOT)
   35.  TempBLCSpread                        = 5%          (1-25%)
   36.  TempBLCInterval                      = 10 minute(s) (1-120)
   37.  TempBLCIOThresh                      = 1           (1-1000)
   38.  TempBLCPriority                      = MEDIUM/DEFAULT (LOW, MEDIUM/DEFAULT, HIGH, RUSH/TOP)
   39.  TempBLCRescanPeriod                  = 7 day(s)     (1-90)
   40.  CompressionZLIBMethod                = IPPZLIB      (ZLIB, IPPZLIB)
   41.  OverrideARCBLC                       = FALSE       (TRUE, FALSE)

BlockLevelCompression = ON

BLC機能は有効になります。異なるカテゴリのテーブルのDBは、圧縮グループの他の設定によって、圧縮される場合と圧縮されない場合があります。

DefaultTableMode = MANUAL (AUTOTEMP, MANUAL, ALWAYS, NEVER)

BLCは、以下のDBS制御フィールドの設定に基づいて適用されます: CompressPermPrimaryDBs、CompressPermFallbackDBs、CompressPermPrimaryCLOBDBs、CompressPermFallbackCLOBDBs。これにより、テーブルが作成される時点におけるそれぞれのテーブル タイプのデフォルトBLCが設定されます。こうしたデフォルトは、ロード時にBLOCKCOMPRESSIONクエリー バンドを使用して上書きできます。

CompressPermPrimaryDBs = UNLESSQBNO (ALWAYS, UNLESSQBNO, NEVER, ONLYIFQBYES)

ロード時に使用されたクエリー バンドで圧縮しないように指定されていない限り、新規のテーブルのDBは圧縮されます。

クエリバンド(BLOCKCOMPRESSION)を設定し、同様のデータをt3(圧縮無), t4(圧縮有)に挿入

SET QUERY_BAND = 'BLOCKCOMPRESSION=NO;' FOR SESSION;

insert into t3 select * from t1;

 *** Insert completed. 4194309 rows added. 
 *** Total elapsed time was 7 seconds.


SET QUERY_BAND = 'BLOCKCOMPRESSION=YES;' FOR SESSION;

insert into t4 select * from t1;


 *** Insert completed. 4194309 rows added. 
 *** Total elapsed time was 10 seconds.

420万レコードを挿入
圧縮無:7秒
圧縮有:10秒

###容量を確認

select tablename, sum(currentPerm) from dbc.tableSize where tableName in ('t3', 't4') group by tablename;

TableName                                 Sum(CurrentPerm)
------------------------------  --------------------------
t3                                             469,843,968
t4                                              99,164,160

圧縮無:470MB
圧縮有:100MB

→約4.7倍の効果

参考

[BLOCKCOMPRESSION • Teradata Vantage™ SQLデータ定義言語 構文規則および例 • リーダー • Teradataドキュメント]
(https://docs.teradata.com/reader/RknaJAFX_2CtUAZfB4_rTA/afLTtJu1hyM0CPh08LCtVQ)
[DefaultTableMode • Teradata Vantage™ - データベース ユーティリティ • リーダー • Teradataドキュメント]
(https://docs.teradata.com/reader/gjXRKe910A9hOE8O2C3Ufw/InbpTdHQBcGseHdh1C5dhQ)
[例: 予約クエリー バンドBLOCKCOMPRESSIONの使用 • Teradata Vantage™ SQLデータ定義言語 構文規則および例 • リーダー • Teradataドキュメント]
(https://docs.teradata.com/reader/RknaJAFX_2CtUAZfB4_rTA/t~NmXx~RJrfUzA1tl9QzpQ)

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0