目的
ブロックレベル圧縮(BLC)の効果を検証
前提
ブロックレベル圧縮(BLC)に必要な設定
- DBS制御フィールド BlockLevelCompression の設定
- 表のBLOCKCOMPRESSIONオプション
- データ挿入時のクエリーバンド
手順(概要)
- 空テーブルt3, t4を作成
- 同様のデータをt3:圧縮無、t4:圧縮有で挿入
- 容量を比較
手順(詳細)
空テーブル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)