db2 v9.7 圧縮機能利用ガイド - ibm...表表表表ののののcompress 属性ををををno...

104
1 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009 DB2 V9.7 圧縮機能 圧縮機能 圧縮機能 圧縮機能 利用 利用 利用 利用ガイド ガイド ガイド ガイド 資料掲載事項は、ある特定の環境・使用状においての正確性がIBMによって確認されていますが、すべての環境において同様の結果が得られる保証 はありません。これらの技術を自身の環境に適用する際には、自己の責任において十分な検証と確認を実施いただくことをお奨めいたします。 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009 <第1.0020097

Upload: others

Post on 22-Apr-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

1 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

DB2 V9.7 圧縮機能圧縮機能圧縮機能圧縮機能 利用利用利用利用ガイドガイドガイドガイド

本資料掲載事項は、ある特定の環境・使用状況においての正確性がIBMによって確認されていますが、すべての環境において同様の結果が得られる保証はありません。これらの技術を自身の環境に適用する際には、自己の責任において十分な検証と確認を実施いただくことをお奨めいたします。

© Copyright IBM Japan Systems Engineering Co., Ltd. 2009

<第1.00版 2009年 7月>

Page 2: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

2 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

内容内容内容内容

� DB2 V9.7DB2 V9.7DB2 V9.7DB2 V9.7のののの圧縮機能圧縮機能圧縮機能圧縮機能

� 表表表表のののの行圧縮行圧縮行圧縮行圧縮

� 索引索引索引索引のののの圧縮圧縮圧縮圧縮

� 参考資料参考資料参考資料参考資料

Page 3: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

3 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

DB2 V9.7のののの圧縮機能圧縮機能圧縮機能圧縮機能

�表表表表のののの行圧縮行圧縮行圧縮行圧縮� 辞書を使った行レベルのデータ圧縮

� 列単位ではなく行単位

� 圧縮の対象のデータ(※)圧縮可能なデータの種類はバージョンによって異なります。

� 表データ� XML(INLINE)データ (V9.5~)� XML(XDA)データ (V9.7)� LOBデータ (V9.7)

� 一時表の圧縮も可能 (V9.7)

� システム一時表、ユーザー一時表

� レプリケーションのソース表のサポート (V9.7)

�索引索引索引索引のののの圧縮圧縮圧縮圧縮 (V9.7)

� 複数のアルゴリズムを用いた索引自動圧縮

� 圧縮対象外の索引� MDCブロック索引, カタログ表の索引, index specifications, XMLメタ索引, XMLパス索引

V9.7でででで圧縮機能圧縮機能圧縮機能圧縮機能がががが

大幅大幅大幅大幅にににに強化強化強化強化されたされたされたされた

Page 4: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

4 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

� V8 GA~

� テーブル作成時の「VALUE COMPRESSION」

� V8 FixPak 4~

� バックアップイメージの圧縮

� V9.1

� 表表表表のののの行圧縮行圧縮行圧縮行圧縮 (Row Compression)のののの登場登場登場登場

� V9.5

� XMLデータのサポート

� 辞書メンテナンスの機能強化 (ADC)

� 管理機能強化 (管理ビューと表関数)

� V9.7

� 索引の圧縮

� 一時表の圧縮

� XML(XDA)データ圧縮

� インラインLOBデータの圧縮

DB2でのでのでのでのデータデータデータデータ圧縮技術圧縮技術圧縮技術圧縮技術のののの歴史歴史歴史歴史

当ガイドの

対象範囲

Page 5: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

5 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

圧縮圧縮圧縮圧縮することのすることのすることのすることのメリットメリットメリットメリット

�ディスク使用量の削減

� 特に、繰り返しデータがあるような場合に効果的

�バッファー・プールの使用率向上

� より多くのデータが圧縮された状態でバッファープールに乗るため、バッファープールヒットバッファープールヒットバッファープールヒットバッファープールヒット率率率率のののの向上向上向上向上が期待できる

� ディスクへの読み書き量が削減できるため、特にI/Oネックのシステム

にはパフォーマンスパフォーマンスパフォーマンスパフォーマンス向上向上向上向上の効果がある

�ログ・ファイルへの書き出し量が削減される

Page 6: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

6 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 7: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

7 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

表表表表のののの行圧縮行圧縮行圧縮行圧縮のののの内容内容内容内容

�行圧縮の概要

�行圧縮の使用方法

�辞書の作成、メンテナンス

�V9.7新機能

� 一時表一時表一時表一時表のののの圧縮圧縮圧縮圧縮

� XMLデータデータデータデータのののの圧縮圧縮圧縮圧縮

� LOB(インラインインラインインラインインライン格納格納格納格納)データデータデータデータのののの圧縮圧縮圧縮圧縮

� レプリケーションレプリケーションレプリケーションレプリケーション・・・・ソースソースソースソース表表表表ののののサポートサポートサポートサポート

Page 8: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

8 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 9: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

9 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

行圧縮行圧縮行圧縮行圧縮のののの概要概要概要概要

� 辞書を使った行レベルのデータ圧縮

�特定のフレーズを辞書に登録し、辞書にあるデータを基に実データを圧縮していく

�Lempel Ziv アルゴリズム(LZ78,静的辞書圧縮法)を応用した圧縮が行われる

A B U R A K A T A B U R A圧縮前

‘UR’3

‘BU’2

‘AB’1111

文字列文字列文字列文字列番号番号番号番号

LZ78辞書

■LZ78の例

1 3 A K A T A 2 R A

圧縮後

辞書を作成

辞書を元にデータを圧縮

圧縮前「13文字」あったのが、圧縮後に「10文字」になっている

Page 10: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

10 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考)辞書を使った行レベルのデータ圧縮

�圧縮は列単位ではなく行単位で行われるため、複数列に跨って特定のパターンの値が繰り返されるような場合、それらの列は続けて定義すると圧縮効率が良くなる。

24355港区港区港区港区東京都東京都東京都東京都10000500Fred

24355港区港区港区港区東京都東京都東京都東京都20000500John

郵便番号郵便番号郵便番号郵便番号区区区区・・・・市市市市都道府県都道府県都道府県都道府県給与給与給与給与部署部署部署部署名前名前名前名前

……

東京都東京都東京都東京都, 港区港区港区港区,2435502

50001

…24355港区港区港区港区東京都東京都東京都東京都20000500John24355港区東京都10000500Fred

辞書(ディクショナリ)

…(02)20000(01)John(02)10000(01)Fred

辞書には、レコードにある特定のパターンが記録される

Page 11: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

11 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

行圧縮行圧縮行圧縮行圧縮のののの使用方法使用方法使用方法使用方法

1. 表表表表のののの COMPRESS属性属性属性属性をををを YESにににに設定設定設定設定するするするする� 表の作成、もしくは、表定義の変更で設定可能

� CREATE TABLE / ALTER TABLE

� COMPRESS YESの定義だけでは圧縮は行われないので、辞書の作成が必要である

2. 辞書辞書辞書辞書をををを作成作成作成作成するするするする� V9.1では、以下 2つの方法が可能

� 方法 1: Shadow Copyアプローチによる表の再編成� 方法 2: INSPECTコマンド

� V9.5以降は、さらに 4つの方法が使用可能

� 方法 3: 自動辞書作成(ADC: Automatic Dictionary Creation)� 方法 4: LOADコマンド(REPLACE)� 方法 5: ADMIN_GET_TAB_COMPRESS_INFO_V97表関数� 方法 6: ADMIN_MOVE_TABLEプロシージャーを利用した方法(V9.7のみ)

3. 辞書辞書辞書辞書ををををメンテナンスメンテナンスメンテナンスメンテナンスするするするする� 必要に応じて辞書をメンテナンスし再圧縮を行う

Page 12: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

12 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

解説解説解説解説::::行圧縮行圧縮行圧縮行圧縮のののの使用方法使用方法使用方法使用方法

� 行圧縮を使用するには、以下 2つの作業を行ないます。

1. 表への COMPRESS属性をYESに定義する

2. 辞書を作成する。

� 実際に、表データが圧縮されるには、表へのCOMPRESS属性が YESであるだけではなく、辞書の作成が必要です。辞書の作成方法には、以下があります。

【V9.1から使用可能な方法】

1. Shadow Copyアプローチによる表の再編成

2. INSPECTコマンド

【V9. 5から使用可能な方法】

3. 自動辞書作成(ADC: Automatic Dictionary Creation)

4. LOADコマンド(REPLACE)

5. ADMIN_GET_TAB_COMPRESS_INFO_V97表関数

※V9.5ではADMIN_GET_TAB_COMPRESS_INFO表関数が使用できます。

6. V9.7新機能のADMIN_MOVE_TABLEプロシージャーを利用

� V9.5以降は、自動辞書作成(ADC)によって、一定量のデータが投入されれば、DB2が自動的に辞書を作成して、表データが圧縮されます。

� V9.1では、ユーザーが辞書を明示的に作成する必要があります。辞書が作成されない場合には、データ圧縮が行われません

� 辞書は、データページの中に保管されています。

Page 13: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

13 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

行圧縮行圧縮行圧縮行圧縮のののの使用使用使用使用をやめるをやめるをやめるをやめる方法方法方法方法

1. 表表表表のののの COMPRESS属性属性属性属性をををを NOにににに設定設定設定設定するするするする� ALTER TABLEで定義する

� COMPRESS NOの定義以降に発生したデータは圧縮されずに格納

� 既存データを解凍するためにはオフライン再編成を実施

2. オフラインオフラインオフラインオフライン再編成再編成再編成再編成のののの実施実施実施実施

� データが全て解凍される

� 「KEEPDICTIONARY」オプション(デフォルト) ・・・辞書は保持される

� 「RESETDICTIONARY」オプション ・・・ 辞書は破棄される

Page 14: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

14 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考)

� SYSCAT.TABLESカタログビューで現在圧縮されているか確認できます

� COMPRESSION列列列列

値の圧縮が利用されているV

行圧縮が利用されているR

圧縮は利用されていないN

値と行の両方の圧縮が利用されているB

意味値

この表の中の圧縮された行の長さの平均 (バイト単位)。

(圧縮された行の)解凍コストを計算するためにオプティマイザーが使用

AVGCOMPRESSEDROWSIZE

行の平均圧縮率(圧縮されていない行の平均の長さを、圧縮された行の平均の長さで除算したもの)

(圧縮された行の)解凍コストを計算するためにオプティマイザーが使用

AVGROWCOMPRESSIONRATIO

表の中の行の総数に対する圧縮された行のパーセンテージ。

(圧縮された行の)解凍に掛かるCPUコストを計算するためにオプティマイザーが使用

PCTROWSCOMPRESSED

行圧縮によって節約されたページの割合PCTPAGESSAVED

この表の中の圧縮された行と圧縮されていない行の両方の長さの平均(バイト単位)。

AVGROWSIZE

説明列名

� 圧縮に関するその他の情報

Page 15: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

15 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

辞書辞書辞書辞書のののの作成方法作成方法作成方法作成方法((((1111/4))))

�方法方法方法方法1: Shadow Copyアプローチアプローチアプローチアプローチによるによるによるによる表表表表のののの再編成再編成再編成再編成

� 再編成処理の中で、辞書に基づいた表データの圧縮を行なう。圧縮に使用される辞書は、既存を引き継ぐのか、新規に作成するのかを、オプションで指定できる

�方法方法方法方法2: INSPECTコマンドコマンドコマンドコマンド

� 既存の辞書が存在しない場合、行圧縮の見積もりのために作成される辞書が、コマンド実行後に保持される

� 圧縮率の見積もりについては、『辞書のメンテナンス』の項で説明する

>>-REORG-------------------------------------------------------->

>--+-TABLE--table-name--|Table Clause|--------------------------------+-->

.-KEEPDICTIONARYKEEPDICTIONARYKEEPDICTIONARYKEEPDICTIONARY--.>---------------------------------------------------+-----------------+-->

'-RESETDICTIONARYRESETDICTIONARYRESETDICTIONARYRESETDICTIONARY-'

V9.1から提供されている方法

Page 16: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

16 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

解説:辞書の作成方法 (V9.1~)

� Shadow Copyアプローチによる表の再編成では、辞書の作成と共に、既存の表データに対

する圧縮が実行されます。この方法は、表データを最も圧縮率を高くすることが可能です。また、行圧縮を適用済みの表に対して、データの解凍、再圧縮を行なう際にも使用します。再圧縮を行う場合には、使用する辞書として、既存の辞書を引き継ぐのか、新規に辞書を再作成するのかを、KEEPDICTIONARY、RESETDICTIONARYオプションで指定できます。

また、通常のREORGと同様に、システム一時表スペースの指定、特定の索引列にあわせて

表データを並び替えることが可能です。

� INSPECTコマンドを使用すると、行圧縮を使用する前に、指定した表のデータのサンプルを

基に辞書を作成し、その辞書を使用して圧縮テストを行うことで、圧縮率を見積もることが可能です。この見積もりの際、辞書が存在しない場合には、見積もりに使用された辞書が保持され、以降に挿入されたデータが圧縮されます。

Page 17: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

17 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:REORGにおける「KEEPDICTIONARY」「RESETDICTIONARY」の違い

�REORG KEEPDICTIONARY((((デフォルトデフォルトデフォルトデフォルト))))

�REORG RESETDICTIONARY

影響影響影響影響なしなしなしなし、、、、全行圧縮解除全行圧縮解除全行圧縮解除全行圧縮解除されるされるされるされるNN

辞書辞書辞書辞書がががが除去除去除去除去されされされされ、、、、全行圧縮解除全行圧縮解除全行圧縮解除全行圧縮解除されるされるされるされるYN

辞書辞書辞書辞書がががが新規作成新規作成新規作成新規作成されされされされ、、、、行行行行がががが圧縮圧縮圧縮圧縮されるされるされるされるNY

辞書辞書辞書辞書がががが再作成再作成再作成再作成されされされされ、、、、行行行行がががが圧縮圧縮圧縮圧縮されるされるされるされるYY

結果辞書が存在するかCOMPRESS

影響影響影響影響なしなしなしなし、、、、全行圧縮解除全行圧縮解除全行圧縮解除全行圧縮解除されるされるされるされるNN

辞書辞書辞書辞書はそのままはそのままはそのままはそのまま、、、、全行圧縮解除全行圧縮解除全行圧縮解除全行圧縮解除されるされるされるされるYN

辞書辞書辞書辞書がががが新規作成新規作成新規作成新規作成されされされされ、、、、行行行行がががが圧縮圧縮圧縮圧縮されるされるされるされるNY

辞書辞書辞書辞書はそのままはそのままはそのままはそのまま、、、、行行行行がががが圧縮圧縮圧縮圧縮されるされるされるされるYY

結果辞書が存在するかCOMPRESS

Page 18: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

18 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例:Shadow Copyアプローチによる表の再編成を使用した行圧縮

[ymv95usr@sakura /home/ymv95usr]$ db2 "select substr(tabname,1,20) as tabname, npages, fpages, compression,avgcompressedrowsize, avgrowcompressionratio, avgrowsize, pctpagessaved from syscat.tables where tabname='TBL_COMP'"

TABNAME NPAGES FPAGES COMPRESSION AVGCOMPRESSEDROWSIZE AVGROWCOMPRESSIONRATIO AVGROWSIZE PCTPAGESSAVED-------------------- ----------- ----------- ----------- -------------------- ------------------------ ---------- -------------TBL_COMP 8550 8551 N 0 +0.00000E+000 69 0

1 レコードが選択されました。

[ymv95usr@sakura /home/ymv95usr]$ db2 alter table tbl_comp compress yesDB20000I SQL コマンドが正常に完了しました。

[ymv95usr@sakura /home/ymv95usr]$ db2 reorg table tbl_comp index idx_comp_ranid use tempspace1 resetdictionaryDB20000I REORG コマンドが正常に完了しました。

[ymv95usr@sakura /home/ymv95usr]$ db2 runstats on table ymv95usr.tbl_comp and indexes allDB20000I RUNSTATS コマンドが正常に完了しました。

[ymv95usr@sakura /home/ymv95usr]$ db2 "select substr(tabname,1,20) as tabname, npages, fpages, compression,avgcompressedrowsize, avgrowcompressionratio, avgrowsize, pctpagessaved from syscat.tables where tabname='TBL_COMP'"

TABNAME NPAGES FPAGES COMPRESSION AVGCOMPRESSEDROWSIZE AVGROWCOMPRESSIONRATIO AVGROWSIZE PCTPAGESSAVED-------------------- ----------- ----------- ----------- -------------------- ------------------------ ---------- -------------TBL_COMP 3880 3886 R 31 +2.19416E+000 31 54

N: 行圧縮の設定なしR: 行圧縮の設定あり

使用ページが減少していることがわかる

節約されたスペースの比率(%)

圧縮前の平均レコード長

圧縮後の平均レコード長

Page 19: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

19 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例:表スナップショットによるモニタリング (1/2)

� データを100万件投入し、 「ALTER TABLE … COMPRESS YES」実行後、「REORG…RESETDICTIONARY」実行(※COMPRESS YESで、辞書が存在しない状態)

表リスト表スキーマ = YMV95USR表名 = TBL_COMP表タイプ = ユーザーデータ・オブジェクト・ページ = 8550索引オブジェクト・ページ = 3313読み取り行数 = 5000000書き込み行数 = 0オーバーフロー = 0再編成ページ数 = 0表の REORG 情報:

REORG タイプ =再クラスタリング表の REORG読み取りアクセスの許可表スキャンを介した再クラスタリングコンプレッションコンプレッションコンプレッションコンプレッション・・・・ディクショナリーディクショナリーディクショナリーディクショナリーののののリセットリセットリセットリセットデータのみの REORG

索引の REORG = 1表スペースの REORG = 1開始時刻 = 2008-06-26 22:03:04.885872REORG REORG REORG REORG フェーズフェーズフェーズフェーズ = 1 = 1 = 1 = 1 ---- ソートソートソートソート////ディクショナリーディクショナリーディクショナリーディクショナリー・・・・サンプルサンプルサンプルサンプル最大フェーズ = 4フェーズ開始時刻 = 2008-06-26 22:03:04.962871状況 = 開始現行カウンター = 8549最大カウンター = 8549完了 = 0圧縮された行数 = 0拒否された行数 = 0終了時刻 =

表リスト表スキーマ = YMV95USR表名 = TBL_COMP表タイプ = ユーザーデータ・オブジェクト・ページ 8550索引オブジェクト・ページ 3313読み取り行数 = 5000000書き込み行数 = 0オーバーフロー = 0再編成ページ数 = 0表の REORG 情報:

REORG タイプ =再クラスタリング表の REORG読み取りアクセスの許可表スキャンを介した再クラスタリングコンプレッション・ディクショナリーのリセットデータのみの REORG

索引の REORG = 1表スペースの REORG = 1開始時刻 = 2008-06-26 22:03:04.885872REORG REORG REORG REORG フェーズフェーズフェーズフェーズ = 2 = 2 = 2 = 2 ---- ビルドビルドビルドビルド最大フェーズ = 4フェーズ開始時刻 = 2008-06-26 22:03:46.953700状況 = 開始現行カウンター = 2672最大カウンター = 8549完了 = 0圧縮圧縮圧縮圧縮されたされたされたされた行数行数行数行数 = 684907= 684907= 684907= 684907拒否された行数 = 0終了時刻 =

REORGフェーズ1 - Sort/Dictionary Sample(ソート/ディクショナリーのビルド)2 - Build(ビルド)3 - Replace(置換)4 - Index Recreate(索引の再作成)

Page 20: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

20 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例:表スナップショットによるモニタリング (2/2)

� 既存のデータが既に圧縮されている状態で、「REORG…KEEPDICTIONARY」実行

(※COMPRESS YESで、辞書が存在する状態)

表リスト表スキーマ = YMV95USR表名 = TBL_COMP表タイプ = ユーザーデータ・オブジェクト・ページ = 3898索引オブジェクト・ページ = 3313読み取り行数 = 948363書き込み行数 = 0オーバーフロー = 0再編成ページ数 = 0表の REORG 情報:

REORG タイプ =再クラスタリング表の REORG読み取りアクセスの許可表スキャンを介した再クラスタリングコンプレッションコンプレッションコンプレッションコンプレッション・・・・ディクショナリーディクショナリーディクショナリーディクショナリーのののの保持保持保持保持データのみの REORG

索引の REORG = 1表スペースの REORG = 1開始時刻 = 2008-06-26 22:21:49.592591REORG REORG REORG REORG フェーズフェーズフェーズフェーズ = 1 = 1 = 1 = 1 ---- ソートソートソートソート最大フェーズ = 4フェーズ開始時刻 = 2008-06-26 22:21:49.634417状況 = 開始現行カウンター = 3694最大カウンター = 3897完了 = 0圧縮された行数 = 0拒否された行数 = 0終了時刻 =

表リスト表スキーマ = YMV95USR表名 = TBL_COMP表タイプ = ユーザーデータ・オブジェクト・ページ = 3898読み取り行数 = 1934950書き込み行数 = 0オーバーフロー = 0再編成ページ数 = 0表の REORG 情報:

REORG タイプ =再クラスタリング表の REORG読み取りアクセスの許可表スキャンを介した再クラスタリングコンプレッション・ディクショナリーの保持データのみの REORG

索引の REORG = 1表スペースの REORG = 1開始時刻 = 2008-06-26 22:21:49.592591REORG フェーズ = 4 - 索引の再作成最大フェーズ = 4フェーズ開始時刻 = 2008-06-26 22:22:01.775221状況 = 開始現行カウンター = 0最大カウンター = 3313完了 = 0圧縮圧縮圧縮圧縮されたされたされたされた行数行数行数行数 = 1000000= 1000000= 1000000= 1000000拒否された行数 = 0終了時刻 =

REORGフェーズ1 - Sort/Dictionary Sample(ソート/ディクショナリーのビルド)2 - Build(ビルド)3 - Replace(置換)4 - Index Recreate(索引の再作成)

Page 21: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

21 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

�方法方法方法方法3: 自動辞書作成自動辞書作成自動辞書作成自動辞書作成((((ADC: Automatic Dictionary Creation))))

�一定量のデータが表に格納された時点で、DB2が自動的に辞書を作成する

� 容量のしきい値は、約1~2MB。データをサンプリングして、辞書が作成される(し

きい値は内部的に決められている)

� 自動的に辞書作成が行われるのは、しきい値を最初に越えた時点のみ(一度のみ)

�辞書作成後に挿入されたデータが、圧縮して格納される

� 既存データは、圧縮されない

� ADCが使用可能な条件は、以下のとおり

� 表のCOMPRESS属性がYESに定義されている

� その表に辞書が作成されていない→ 辞書辞書辞書辞書がすでにがすでにがすでにがすでに存在存在存在存在するするするする場合場合場合場合、、、、ADCはははは機能機能機能機能しないしないしないしない

� ADCのトリガーとなる操作は、以下のとおり

� INSERT

� IMPORT INSERT

� LOAD INSERT

� REDISTRIBUTE DATABASE PARTITION GROUP

辞書辞書辞書辞書のののの作成方法作成方法作成方法作成方法((((2/4)))) V9.5から追加された方法

Page 22: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

22 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ADCによるによるによるによる自動辞書作成自動辞書作成自動辞書作成自動辞書作成

Page 23: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

23 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

解説:辞書の作成方法 (V9.5~)

� V9.5からの新機能である自動辞書作成(ADC: Automatic Dictionary Creation)は、DB2が自動的に辞書を作成する機能です。辞書の作成が行なわれるのは、表のCOMPRESS属性が YES

で、辞書が存在しない状態において、一定量のデータが表に投入された時です。この容量のしきい値は、約1~2MBで、DB2によって最適な値が決定されます。これらのデータをサンプリングし

て、辞書が作成されます。自動的に辞書作成が行われるのは、しきい値を最初に越えた時点です。一旦辞書が作成された後は、表に辞書が存在することとなるため、自動辞書機能が動作するのは、一度のみです。

� ADCによる辞書作成の流れは、以下の通りです。

1. 圧縮辞書を持たない空の表が存在する

2. 表にデータが挿入される。辞書が存在しないため、データは圧縮されない

3. 更にデータが挿入されるが、辞書が存在しないため、データは圧縮されない

4. しきい値に達すると、自動的に辞書作成が開始される(COMPRESS YESの場合のみ)

5. 圧縮辞書が作成される(既存のデータは圧縮されないまま存在する)

6. 圧縮辞書が表に付加される

7. この時点以降に挿入されたデータは、圧縮して格納される

Page 24: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

24 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 25: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

25 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例:ADCによる自動辞書作成 (1/4)

・・・・SALES01SALES01SALES01SALES01表表表表のののの表表表表サイズサイズサイズサイズをををを確認確認確認確認するするするする

$ db2 "select DATA_OBJECT_P_SIZE from SYSIBMADM.ADMINTABINFO where tabname='SALES01'"

DATA_OBJECT_P_SIZE

--------------------

512

1 レコードが選択されました。

・・・・ADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOビュービュービュービューをををを参照参照参照参照しししし、、、、圧縮圧縮圧縮圧縮がががが行行行行われているかわれているかわれているかわれているか、、、、辞書辞書辞書辞書がががが作成作成作成作成されているかをされているかをされているかをされているかを確認確認確認確認するするするする

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname='SALES01'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ -------------------------- -------------------- --------------------

N NOT BUILT - 0 0

1 レコードが選択されました。

・・・・SALES01SALES01SALES01SALES01表表表表ををををCOMPRESS YESCOMPRESS YESCOMPRESS YESCOMPRESS YESにににに設定設定設定設定するするするする

$ db2 "alter table sales01 compress yes"

DB20000I SQL コマンドが正常に完了しました。

・・・・ADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOビュービュービュービューをををを参照参照参照参照しししし、、、、圧縮圧縮圧縮圧縮がががが行行行行われているかわれているかわれているかわれているか、、、、辞書辞書辞書辞書がががが作成作成作成作成されているかをされているかをされているかをされているかを確認確認確認確認するするするする

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname='SALES01'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ -------------------------- -------------------- --------------------

Y NOT BUILT - 0 0

1 レコードが選択されました。

圧縮前の表のサイズは512KB

COMPRESS NOで、辞書は作成されていない

COMPRESS YESだが、辞書は作成されていない

Page 26: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

26 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例:ADCによる自動辞書作成 (2/4)

・・・・SALES01SALES01SALES01SALES01表表表表ににににデータデータデータデータをををを挿入挿入挿入挿入するするするする

$ db2 "insert into sales01 select * from sales01"

DB20000I SQL コマンドが正常に完了しました。

・・・・SALES01SALES01SALES01SALES01表表表表のののの表表表表サイズサイズサイズサイズをををを確認確認確認確認するするするする

$ db2 "select DATA_OBJECT_P_SIZE from SYSIBMADM.ADMINTABINFO where tabname='SALES01'"

DATA_OBJECT_P_SIZE

--------------------

768

1 レコードが選択されました。

・・・・ADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOビュービュービュービューをををを参照参照参照参照しししし、、、、圧縮圧縮圧縮圧縮がががが行行行行われているかわれているかわれているかわれているか、、、、辞書辞書辞書辞書がががが作成作成作成作成されているかをされているかをされているかをされているかを確認確認確認確認するするするする

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname='SALES01'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ -------------------------- -------------------- --------------------

Y NOT BUILT - 0 0

1 レコードが選択されました。

・・・・SALES01SALES01SALES01SALES01表表表表ににににデータデータデータデータをををを挿入挿入挿入挿入するするするする

$ db2 "insert into sales01 select * from sales01"

DB20000I SQL コマンドが正常に完了しました。

(更にデータを挿入する。)

サイズが768KBに増加する

辞書はまだ作成されていない

Page 27: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

27 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例:ADCによる自動辞書作成 (3/4)

・・・・SALES01SALES01SALES01SALES01表表表表のののの表表表表サイズサイズサイズサイズをををを確認確認確認確認するするするする

$ db2 "select DATA_OBJECT_P_SIZE from SYSIBMADM.ADMINTABINFO where tabname='SALES01'"

DATA_OBJECT_P_SIZE

--------------------

2304

1 レコードが選択されました。

・・・・ADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOビュービュービュービューをををを参照参照参照参照しししし、、、、圧縮圧縮圧縮圧縮がががが行行行行われているかわれているかわれているかわれているか、、、、辞書辞書辞書辞書がががが作成作成作成作成されているかをされているかをされているかをされているかを確認確認確認確認するするするする

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname='SALES01'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ -------------------------- -------------------- --------------------

Y NOT BUILT - 0 0

1 レコードが選択されました。

(更にデータを挿入する。)

$ db2 "select DATA_OBJECT_P_SIZE from SYSIBMADM.ADMINTABINFO where tabname='SALES01'"

DATA_OBJECT_P_SIZE

--------------------

3072

1 レコードが選択されました。

サイズが2304KBに増加する

辞書はまだ作成されていない

サイズが3072KBに増加する

Page 28: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

28 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例:ADCによる自動辞書作成 (4/4)

・・・・ADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOビュービュービュービューをををを参照参照参照参照しししし、、、、圧縮圧縮圧縮圧縮がががが行行行行われているかわれているかわれているかわれているか、、、、辞書辞書辞書辞書がががが作成作成作成作成されているかをされているかをされているかをされているかを確認確認確認確認するするするする

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname='SALES01'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ -------------------------- -------------------- --------------------

Y TABLE GROWTH 2007-09-25-20.50.26.000000 13312 15072

1 レコードが選択されました。

・・・・ADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOビュービュービュービューからからからから、、、、圧縮圧縮圧縮圧縮にににに関関関関するそのするそのするそのするその他他他他のののの情報情報情報情報をををを参照参照参照参照するするするする

$ db2 "select ROWS_SAMPLED, PAGES_SAVED_PERCENT, BYTES_SAVED_PERCENT, AVG_COMPRESS_REC_LENGTH from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname='SALES01'"

ROWS_SAMPLED PAGES_SAVED_PERCENT BYTES_SAVED_PERCENT AVG_COMPRESS_REC_LENGTH

------------ ------------------- ------------------- -----------------------

46404 67 67 14

1 レコードが選択されました。

$ db2 "select count(*) from sales01"

1

-----------

83968

1 レコードが選択されました。

辞書が作成され、作成時刻、辞書サイズが表示される

辞書作成のためのサンプリングに使用された行数、節約された領域、平均行長が表示される

約半分のデータがサンプリングに使用されている

Page 29: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

29 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

�方法方法方法方法4: LOADコマンドコマンドコマンドコマンド((((REPLACE))))

� LOAD REPLACE操作によって、辞書のメンテナンス(作成、削除)とデータの圧縮を行う。

�方法方法方法方法 5: ADMIN_GET_TAB_COMPRESS_INFO_V97表関数表関数表関数表関数

� V9.5ではADMIN_GET_TAB_COMPRESS_INFO表関数を使用して下さい。

� 既存の辞書が存在しない場合、行圧縮の見積もりのために作成される辞書が、コマンド実行後に保持される。

� 表関数の使用方法については、『辞書のメンテナンス』の項で説明する

辞書辞書辞書辞書のののの作成方法作成方法作成方法作成方法 ((((3/4))))

.-,--------------.

V |

>>-LOAD--+--------+--FROM----+-filename---+-+--OF--filetype----->

'-CLIENT-' +-pipename---+

+-device-----+

'-cursorname-'

>--+-INSERT-----------------------+----------------------------->

| .-KEEPDICTIONARYKEEPDICTIONARYKEEPDICTIONARYKEEPDICTIONARY--. |

+-REPLACE--+-----------------+-+

| '-RESETDICTIONARYRESETDICTIONARYRESETDICTIONARYRESETDICTIONARY-' |

+-RESTART----------------------+

'-TERMINATE--------------------'

V9.5から追加された方法

Page 30: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

30 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

解説:LOAD REPLACEによる辞書作成

� V9.5以降では、REPLACEモードの LOADを実行する際に、辞書の作成およびデータの圧

縮を行うことが可能になりました。辞書は、一定量のデータが投入された時点で、データがサンプリングされて作成され、その後に投入されたデータが圧縮対象となります。既に辞書が存在する場合には、既存の辞書を引き継ぐのか、新規に作成するのかを、KEEPDICTIONARY、RESETDICTIONARYオプションで指定できます。

� ADMIN_GET_TAB_COMPRESS_INFO_V97表関数は、INSPECTコマンドと同じく、表の

データのサンプルを基に辞書を作成して、圧縮率を見積もる機能です。見積もりの際、辞書が存在しない場合には、見積もりに使用された辞書が保持されます。

Page 31: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

31 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:LOADにおける「KEEPDICTIONARY」「RESETDICTIONARY」の違い

�KEEPDICTIONARY(デフォルト)

�RESETDICTIONARY

影響なし。LOADされるすべてのデータは圧縮されずに格納される。NN

辞書は保持されるが、LOADされるすべてのデータは圧縮されずに格納される。YN

辞書作成に必要な量のデータがLOADされると新規に辞書が作成され、LOADされる残りのデータは

圧縮して格納される。NY

辞書は保持され、LOADされるすべてのデータは(既存の辞書を使用して)圧縮して格納される。YY

結果辞書が存在するかCOMPRESS

影響なし。LOADされるすべてのデータは圧縮されずに格納される。NN

辞書は削除され、LOADされるすべてのデータは圧縮されずに格納される。YN

辞書作成に必要な量のデータがLOADされると新規に辞書が作成され、LOADされる残りのデータは

圧縮して格納される。NY

辞書が再作成される(*)。辞書作成後にロードされるデータは圧縮して格納される。

(*)辞書がすでに存在し、かつ、COMPRESS YESだが、表(パーティション)にデータが挿入されない

場合、新規の辞書は作成されず、既存の辞書が保持される。

YY

結果辞書が存在するかCOMPRESS

Page 32: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

32 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考: 辞書作成におけるコマンド・オプションの変更点(V9.1&V9.5以降)

表のサイズが ADC の表サイズしきい値と同

じであり、しきい値を超えたときに表に十分なボリュームのデータが存在する場合のみ、表にディクショナリーが挿入される。

COMPRESS YESで辞書が存在しない

場合、表に含まれるデータ量に関係なく(有効なレコードが 1行でも存在する限

り)辞書が作成される。

REORG TABLE

KEEPDICTIONARYオプ

ション

(COMPRESS YESの場合)辞書を保持しない表はADCの対象となる。

(ただし、表に十分なデータが入っている場合に限る。)

適用されない

(辞書作成のトリガーとならない)

INSERT

LOAD INSERT

IMPORT INSERT

REDISTRIBUTE

表がCOMPRESS YESに設定される。

表はADC起動の対象となる。(ただし、1 行

以上のデータが表にロードまたは挿入されている場合に限る。)

表がCOMPRESS YESに設定される。

辞書を作成するためには、オフラインREORGが必要。

CREATE/ALTER TABLE

COMPRESS YESオプショ

既存の辞書があれば削除されて新規の辞書が生成される。(ただし、1 行以上のデータが

表にロードまたは挿入されている場合に限る。)

適用されない

(オプションが存在しない)

LOAD REPLACE

RESETDICTIONARYオプ

ション

V9.5以降V9.1コマンド・オプション

Page 33: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

33 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

� 方法方法方法方法6: ADMIN_MOVE_TABLEプロシージャープロシージャープロシージャープロシージャーをををを利用利用利用利用するするするする

� ADMIN_MOVE_TABLEプロシージャーで表を移動するときに、辞書を作成し圧縮をする

� ADMIN_MOVE_TABLEプロシージャープロシージャープロシージャープロシージャーとはとはとはとは????

� 表表表表のののの読読読読みみみみ書書書書きをきをきをきを可能可能可能可能にしたままにしたままにしたままにしたまま、、、、表表表表をををを移動移動移動移動するするするする

⇒ これまで表の再作成が必要だった変更作業をオンラインで実施できる

� 別の表スペースへの移動

� 表の定義情報の変更

� 索引定義

� MDC表の次元列 (MDC表において各行の格納されるブロックを決定する列)

� パーティション表のレンジ定義

� データデータデータデータのののの圧縮圧縮圧縮圧縮/非圧縮非圧縮非圧縮非圧縮/再圧縮再圧縮再圧縮再圧縮

辞書辞書辞書辞書のののの作成方法作成方法作成方法作成方法 ((((4/4)))) V9.7から追加された方法

COMPRESS=NOの表 COMPRESS=YESの表

CCCC2222CCCC1111 CCCC2222CCCC1111

INSERT,DELETE,UPDATE

COMPRESS=Yで定義されたターゲット表へデータがコピーされる時に辞書も作成される

……

東京都東京都東京都東京都, 港港港港区区区区,24355

02

50001 辞書

Page 34: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

34 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:表のオンライン移動機能の仕組み

表スペース1 表スペース2

CCCC2222CCCC1111

表移動表移動表移動表移動のののの5555つのつのつのつのステップステップステップステップ

①①①① 初期化初期化初期化初期化 (INIT)

-移動先表、トリガー、

ステージング表作成

-定義情報変更

②②②② コピーコピーコピーコピー (COPY)

-データ・コピー

-変更データ情報を

ステージング表格納

③③③③ リプレイリプレイリプレイリプレイ(REPLY)

-ステージング表からの差分データ反映

④④④④ 切切切切りりりり替替替替ええええ(SWAP)

※アクセス不可

⑤⑤⑤⑤ クリーンアップクリーンアップクリーンアップクリーンアップ

※keepオプション(元表保持)

CCCC2222CCCC1111

①①①①

②②②②

②②②②

③③③③

④④④④

INSERT,DELETE,UPDATE

ステージングステージングステージングステージング表表表表

トリガー

表表表表スペーススペーススペーススペース1111からからからから表表表表スペーススペーススペーススペース2222へへへへ 表表表表をををを移動移動移動移動させるさせるさせるさせる場合場合場合場合

(CLEANUP)

①①①①

①①①①

ソースソースソースソース表表表表 ターゲットターゲットターゲットターゲット表表表表

推奨:

・ソース表にユニーク索引をつける

-差分データ更新される行が1つになるため

・作成ディスク・スペース容量を十分に確保する

-ソース表に加え、 ターゲット表、ターゲット表に付随する索引、ステージング表の

ための領域が必要、また、コピーに伴って必要となるログ量も考慮する必要がある

Page 35: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

35 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ADMIN_MOVE_TABLEADMIN_MOVE_TABLEADMIN_MOVE_TABLEADMIN_MOVE_TABLEのののの実行方法実行方法実行方法実行方法

ADMIN_MOVE_TABLEADMIN_MOVE_TABLEADMIN_MOVE_TABLEADMIN_MOVE_TABLEストアードストアードストアードストアード・・・・プロシージャープロシージャープロシージャープロシージャーのののの実行方法実行方法実行方法実行方法はははは2222種類種類種類種類

・方法方法方法方法1111 プロシージャーの中で、新たな定義情報を含めて表を作成し実行する

・方法方法方法方法2222 予め移動先の表を定義(作成)しておき、プロシージャーでその表を指定して実行する

>>-ADMIN_MOVE_TABLE--(--tabschematabschematabschematabschema--,--tabnametabnametabnametabname--,---------------->

>--data_tbsp--,--index_tbsp--,--lob_tbsp--,--mdc_cols--,-------->

.-,-------.

V |

>--partkey_cols--,--data_part--,--coldef--,----options-+--,----->

>--operationoperationoperationoperation--)------------------------------------------------><

>>-ADMIN_MOVE_TABLE--(--tabschematabschematabschematabschema--,--tabnametabnametabnametabname--,---------------->

.-,-------.

V |

>--target_tabnametarget_tabnametarget_tabnametarget_tabname--,----options-+--,--operationoperationoperationoperation--)-------------><

※太青字太青字太青字太青字:必須

COMPRESS=Nの元表をALTER TABLEでCOMPRESS=Yに変更してから実行する

COMPRESS=Yのターゲットをあらかじめ作成してから実行する

Page 36: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

36 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:ADMIN_MOVE_TABLEの実行

各パラメーターの意味:

・TABSHEMATABSHEMATABSHEMATABSHEMA :移動する表のスキーマ ****必須必須必須必須

・TABNAMETABNAMETABNAMETABNAME :移動する表の名前 ****必須必須必須必須

・DATA_TBSP DATA_TBSP DATA_TBSP DATA_TBSP :移動先の表スペース(データ部)

・INDEX_TBSP INDEX_TBSP INDEX_TBSP INDEX_TBSP :移動先の表スペース(索引部)

・LOB_TBSP LOB_TBSP LOB_TBSP LOB_TBSP :移動先の表スペス(LOB部)

・MDC_COLS MDC_COLS MDC_COLS MDC_COLS :次元列(NULLまたは「-」が指定されたときには、非MDC表に変更する)

・PARTKEY_COLS PARTKEY_COLS PARTKEY_COLS PARTKEY_COLS :分散キー

・RANGE_PART RANGE_PART RANGE_PART RANGE_PART :パーティション・キー

・COLDEF COLDEF COLDEF COLDEF :列の定義情報

・OPTIONS OPTIONS OPTIONS OPTIONS :各種オプションの指定

・OPERATION OPERATION OPERATION OPERATION :実行フェーズの指定 ****必須必須必須必須

INIT,COPY,REPLAY,VERYFY(オプション),SWAPを順番に指定、または MOVE でまとめて実行

フェーズとフェーズの間で取り消す場合は、CANCELを指定

・TARGET_TABNAMETARGET_TABNAMETARGET_TABNAMETARGET_TABNAME :移動表の表名 (方法2のみ)

REORGオプション

このオプションを設定すると、スワップ実行前にターゲット表にオフライン REORG が実行される。より完全な圧縮をする場合は指定して下さい。

Page 37: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

37 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

$ db2 "select DATA_OBJECT_P_SIZE from SYSIBMADM.ADMINTABINFO where tabname='LINEITEM'"

DATA_OBJECT_P_SIZE

--------------------

9472

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname= 'LINEITEM'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ --------------------

N NOT BUILT - 0 0

$ db2 alter table lineitem compress yescompress yescompress yescompress yes

DB20000I The SQL command completed successfully.

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname= 'LINEITEM'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ --------------------

Y NOT BUILT - 0 0

$ db2 "call $ db2 "call $ db2 "call $ db2 "call sysproc.admin_move_tablesysproc.admin_move_tablesysproc.admin_move_tablesysproc.admin_move_table

('instV97','LINEITEM','TS1','TS1','TS1','','','','','','MOVE')"('instV97','LINEITEM','TS1','TS1','TS1','','','','','','MOVE')"('instV97','LINEITEM','TS1','TS1','TS1','','','','','','MOVE')"('instV97','LINEITEM','TS1','TS1','TS1','','','','','','MOVE')"

Result set 1

KEY VALUE

-------------------------------- -----------------------------------

スキーマ、ソース表、移動先、

オペレーションを指定し、

LINEITEM表をTS1に移動

COMPRESS YESに設定

LINEITEM表(ソース表)の

サイズは9472

データ移動(MOVE)完了

使用例使用例使用例使用例 方法方法方法方法1111をををを使用使用使用使用したしたしたした表移動表移動表移動表移動とととと行圧縮辞書行圧縮辞書行圧縮辞書行圧縮辞書のののの作成作成作成作成 (1/3)(1/3)(1/3)(1/3)

Page 38: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

38 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

AUTHID KUMIV97

CLEANUP_END 2009-06-29-18.33.33.091284

CLEANUP_START 2009-06-29-18.33.32.427662

COPY_END 2009-06-29-18.33.29.439156

COPY_OPTS ARRAY_INSERT

COPY_START 2009-06-29-18.33.08.486926

COPY_TOTAL_ROWS 59950

INDEXNAME IDX_L_LINENUMBER

INDEXSCHEMA KUMIV97

INDEX_CREATION_TOTAL_TIME 2

INIT_END 2009-06-29-18.33.08.264869

INIT_START 2009-06-29-18.33.05.209880

REPLAY_END 2009-06-29-18.33.31.427389

REPLAY_START 2009-06-29-18.33.29.439613

REPLAY_TOTAL_ROWS 0

REPLAY_TOTAL_TIME 0

STATUS COMPLETE

SWAP_END 2009-06-29-18.33.32.415536

SWAP_RETRIES 0

SWAP_START 2009-06-29-18.33.31.993411

VERSION 09.07.0000

21 record(s) selected.

Return Status = 0

使用例使用例使用例使用例 方法方法方法方法1111をををを使用使用使用使用したしたしたした表移動表移動表移動表移動とととと行圧縮辞書行圧縮辞書行圧縮辞書行圧縮辞書のののの作成作成作成作成 (2/3 )(2/3 )(2/3 )(2/3 )

ADMIN_MOVE_TABLE実行後の

各フェーズの結果・TIME STAMPが

表示される。

Page 39: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

39 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

$ db2 "select DATA_OBJECT_P_SIZE from SYSIBMADM.ADMINTABINFO where tabname='LINEITEM'"

DATA_OBJECT_P_SIZE

--------------------

3328

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname= 'LINEITEM'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ -------------------------- -------------------- --------------------

Y INSPECT 2009-06-29-18.33.27.000000 45440 32768

$ db2 "select ROWS_SAMPLED, PAGES_SAVED_PERCENT, BYTES_SAVED_PERCENT, AVG_COMPRESS_REC_LENGTH from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname='LINEITEM' "

ROWS_SAMPLED PAGES_SAVED_PERCENT BYTES_SAVED_PERCENT AVG_COMPRESS_REC_LENGTH

------------ ------------------- ------------------- -----------------------

59950 69 69 46

$ db2 "select count(*) from lineitem"

1

-----------

59950

使用例使用例使用例使用例 方法方法方法方法1111をををを使用使用使用使用したしたしたした表移動表移動表移動表移動とととと行圧縮辞書行圧縮辞書行圧縮辞書行圧縮辞書のののの作成作成作成作成((((3/33/33/33/3))))

LINEITEM 表のサイズが

小さくなっている。

行圧縮辞書が作成されている。

Page 40: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

40 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 41: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

41 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

辞書辞書辞書辞書ののののメンテナンスメンテナンスメンテナンスメンテナンス

� 辞書辞書辞書辞書メンテナンスメンテナンスメンテナンスメンテナンスののののタイミングタイミングタイミングタイミング

� 今までのデータとは異なるパターンのデータが大量に挿入された時

� 例例例例えばえばえばえば、、、、以下以下以下以下のようなのようなのようなのような運用手順運用手順運用手順運用手順をををを実行実行実行実行するするするする

1. 現在現在現在現在のののの圧縮率圧縮率圧縮率圧縮率をををを確認確認確認確認するするするする

� SYSCAT.TABLESカタログビューでの確認

� ADMINTABCOMPRESSINFO管理ビューによる確認

� ADMIN_GET_TAB_COMPRESS_INFO_V97表関数による確認

2. 既存既存既存既存データデータデータデータのののの状況状況状況状況をををを踏踏踏踏まえたまえたまえたまえた圧縮率圧縮率圧縮率圧縮率をををを見積見積見積見積もるもるもるもる

� INSPECTコマンド

� ADMIN_GET_TAB_COMPRESS_INFO_V97表関数

(現在の圧縮率と見積もり結果の圧縮率の間に大きな乖離がある場合)

3. 辞書辞書辞書辞書をををを新新新新しくしくしくしく再作成再作成再作成再作成してしてしてして、、、、データデータデータデータをををを圧縮圧縮圧縮圧縮するするするする

� RESETDICTIONARYオプションによる再編成の実施

Page 42: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

42 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

解説:辞書のメンテナンス (1/2)

� 行圧縮では、特定のフレーズを辞書に登録して、辞書にあるデータを基に実データを圧縮するため、データベースが使用される中で、辞書にあるデータとは異なるパターンのデータが大量に挿入されていくと、圧縮率は低下します。そのため、定期的に現状の圧縮率を確認して、圧縮率が当初の値よりも低下していないかをモニタリングすることが大切です。圧縮率の低下しているかを判断する一つの目安としては、テスト・フェーズやシステム稼働を始めた時点での圧縮率が参考となります。圧縮率が妥当でない場合には、データの再圧縮も視野に入ります。

� 現在の圧縮率を確認するには、以下の方法があります。管理ビュー、表関数での情報確認は、V9.5以降で可能です。

� SYSCAT.TABLESカタログビューでの確認

� ADMINTABCOMPRESSINFO管理ビューによる確認

� ADMIN_GET_TAB_COMPRESS_INFO_V97表関数による確認

� また、既存データの状況を踏まえた圧縮率を見積もりを行なうことも可能です。以下の方法を使用すれば、本来あるべき圧縮率の見積もりを行なうことが可能です。ただし、これらの見積もりでは、データをサンプリングして結果を出力するため、実際の圧縮率とは異なる場合があります。一つの目安として考えましょう。表関数での見積もりは、V9.5以降で可能です。

� INSPECTコマンドによる圧縮率の見積もり

� ADMIN_GET_TAB_COMPRESS_INFO_V97表関数による圧縮率の見積もり

Page 43: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

43 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

解説:辞書のメンテナンス (2/2)

� 現在の圧縮率が、本来あるべき圧縮率を大きく下回る場合には、辞書を新しく再作成して、データを圧縮する必要があります。既存データを再圧縮するためには、RESETDICTIONARYオプションを指定した再編成を実施します。

Page 44: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

44 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 45: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

45 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

1111....現在現在現在現在のののの圧縮率圧縮率圧縮率圧縮率をををを確認確認確認確認するするするする

�行圧縮行圧縮行圧縮行圧縮についてのについてのについてのについての情報情報情報情報をををを管理管理管理管理ビュービュービュービューとととと表関数表関数表関数表関数でででで確認可能確認可能確認可能確認可能。。。。

� 表の行圧縮に関する情報を、データ・パーティションごとに確認することが可能。

�ADMINTABCOMPRESSINFO管理管理管理管理ビュービュービュービュー

�ADMIN_GET_TAB_COMPRESS_INFO_V97表関数表関数表関数表関数

� 行圧縮に関する情報を参照できる他、行圧縮の見積もりが可能。

� tabschema :スキーマ名

� tabname :表名

� execmode :実行モード

- ‘REPORT’ – 行圧縮行圧縮行圧縮行圧縮にににに関関関関するするするする最新最新最新最新のののの情報情報情報情報をををを参照参照参照参照するするするする。(。(。(。(デフォルトデフォルトデフォルトデフォルト))))

- ‘ESTIMATE’ – 現在の表にもとづいて、圧縮に関する新しい情報を生成する。

SELECT * FROM SYSIBMADM.ADMINTABCOMPRESSINFO

>>-ADMIN_GET_TAB_COMPRESS_INFO_V97--(--tabschema--,--tabname--,--exemode--)-><

これらの管理ビュー、表関数が提供されたのはV9.5からです。

V9.5ではADMIN_GET_TAB_COMPRESS_INFO表関数が使用できます。

Page 46: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

46 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

管理管理管理管理ビュービュービュービューおよびおよびおよびおよび表関数表関数表関数表関数でででで参照可能参照可能参照可能参照可能なななな項目項目項目項目

圧縮された行の平均長AVG_COMPRESS_REC_LENGTH

辞書作成のためにサンプリングされた行数ROWS_SAMPLED

解凍辞書のサイズ(バイト)EXPAND_DICT_SIZE

圧縮辞書のサイズ(バイト)COMPRESS_DICT_SIZE

辞書が作成された時刻(辞書が存在しない場合NULL)DICT_BUILD_TIMESTAMP

圧縮により節約された領域(バイト単位)BYTES_SAVED_PERCENT

圧縮により節約された領域(ページ単位)PAGES_SAVED_PERCENT

オブジェクトのタイプ‘XML’ または‘DATA’OBJECT_TYPE

辞書作成のトリガーとなった操作

�'INSPECT' = INSPECT ROWCOMPESTIMATE

�'LOAD' = LOAD INSERT/REPLACE

�'NOT BUILT' = 辞書が存在しない

�'REDISTRIBUTE' = REDISTRIBUTE

�'REORG' = REORG RESETDICTIONARY

�'TABLE FUNCTION' = ADMIN_GET_TAB_COMRESS_INFO

�'TABLE GROWTH' = INSERT

DICT_BUILDER

表のCOMPRESS属性

�'Y' = COMPRESS YES

�'N' = COMPRESS NO

COMPRESS_ATTR

データ・パーティション番号DATA_PARTITION_ID

データベース・パーティション番号DBPARTITIONNUM

表名TABNAME

スキーマ名TABSCHEMA

説明項目名

Page 47: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

47 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例:ADMINTABCOMPRESSINFO管理ビューによる情報確認

[ymv95usr@sakura /home/ymv95usr]$ db2 "select substr(TABSCHEMA,1,20)as tabschema, substr(TABNAME,1,20) as tabname, DBPARTITIONNUM,DATA_PARTITION_ID, COMPRESS_ATTR, DICT_BUILDER,DICT_BUILD_TIMESTAMP from SYSIBMADM.ADMINTABCOMPRESSINFO where TABNAME='TBL_COMP'"

TABSCHEMA TABNAME DBPARTITIONNUM DATA_PARTITION_ID COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP-------------------- -------------------- -------------- ----------------- ------------- --------------------------- --------------------------YMV95USR TBL_COMP 0 0 Y REORG 2008-06-26-21.11.37.000000

1 レコードが選択されました。

[ymv95usr@sakura /home/ymv95usr]$ db2 "select COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE,ROWS_SAMPLED, PAGES_SAVED_PERCENT, BYTES_SAVED_PERCENT, AVG_COMPRESS_REC_LENGTH from SYSIBMADM.ADMINTABCOMPRESSINFO where TABNAME='TBL_COMP'"

COMPRESS_DICT_SIZE EXPAND_DICT_SIZE ROWS_SAMPLED PAGES_SAVED_PERCENT BYTES_SAVED_PERCENT AVG_COMPRESS_REC_LENGTH-------------------- -------------------- ------------ ------------------- ------------------- -----------------------

20352 32768 1000000 55 55 30

1 レコードが選択されました。

データベース・パーティションおよびデータ・パーティションごとに辞書が作成されていることがわかる

辞書の作成に使用された行数

節約されたスペースの比率(%)

辞書の作成方法

圧縮後の平均レコード長

Page 48: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

48 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 49: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

49 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

>>-INSPECTINSPECTINSPECTINSPECT--+-| Check Clause |--------------------+--RESULTSRESULTSRESULTSRESULTS---->'-| Row Compression Estimate Clause |-'

>--+------+--filename--+----------------------------------+----->'-KEEPKEEPKEEPKEEP-' '-| On Database Partition Clause |-‘

Row Compression Estimate Clause:

|--ROWCOMPESTIMATEROWCOMPESTIMATEROWCOMPESTIMATEROWCOMPESTIMATE-TABLETABLETABLETABLE---------------------------------------->

>--+-NAMENAMENAMENAME--tabletabletabletable----namenamenamename--+---------------------+-+----------------|| '-SCHEMA--schema-name-' |'-TBSPACEID--n--OBJECTID--n-----------------'

2222....既存既存既存既存データデータデータデータのののの状況状況状況状況をををを踏踏踏踏まえたまえたまえたまえた圧縮率圧縮率圧縮率圧縮率をををを見積見積見積見積もるもるもるもる

�INSPECTコマンドコマンドコマンドコマンドでででで圧縮率圧縮率圧縮率圧縮率をををを見積見積見積見積もるもるもるもる

�指定した表のデータのサンプルを基に辞書を作成し、この辞書を使用して圧縮テストを行うことで、圧縮率を見積もる

�見積もられる項目�圧縮によって節約されるバイトのパーセンテージ�圧縮によって節約されるページのパーセンテージ�データ・サイズが小さいため圧縮には不適格な行のパーセンテージ�コンプレッション・ディクショナリーのサイズ

�拡張ディクショナリーのサイズ

Page 50: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

50 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

2222....既存既存既存既存データデータデータデータのののの状況状況状況状況をををを踏踏踏踏まえたまえたまえたまえた圧縮率圧縮率圧縮率圧縮率をををを見積見積見積見積もるもるもるもる

� INSPECTコマンドコマンドコマンドコマンドでででで圧縮率圧縮率圧縮率圧縮率をををを見積見積見積見積もるもるもるもる(続続続続きききき)

� 使用方法

1. 見積もり対象表に対してINSPECTコマンドを実行する� $ db2 “inspect rowcompestimate table name t1 results keep t1_estimate.dmp”

2. $INSTANCE_HOME/sqllib/db2dumpディレクトリ配下に生成されたファイルに対して、DB2INSPFコマンドを実行する� $ db2inspf t1_estimate.dmp t1_estimate.out

Page 51: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

51 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

[ymv95usr@sakura /home/ymv95usr]$ db2 "select count(*) from tbl_comp"

1

-----------

1000000

1 レコードが選択されました。

[ymv95usr@sakura /home/ymv95usr]$ db2 "select substr(tabname,1,20) as tabname, npages, fpages, compression,avgcompressedrowsize, avgrowcompressionratio, avgrowsize, pctpagessaved from syscat.tables where tabname='TBL_COMP'"

TABNAME NPAGES FPAGES COMPRESSION AVGCOMPRESSEDROWSIZE AVGROWCOMPRESSIONRATIO AVGROWSIZE PCTPAGESSAVED

-------------------- -------------------- -------------------- ----------- -------------------- ------------------------ ---------- -------------

TBL_COMP 8550 8550 N 0 +0.00000E+000 69 0

1 レコードが選択されました。

[ymv95usr@sakura /home/ymv95usr]$ db2 "inspect rowcompestimate table name tbl_comp results keep comp_estimate.dmp"

DB20000I INSPECT コマンドが正常に完了しました。

実行例: INSPECTコマンドによる圧縮率の見積もり (1/3)

38928550 表が使用しているページ数

(8KBページ)

COMP YES

100万件格納

COMP NO

100万件格納

データデータデータデータ量量量量はははは基基基基ののののデータデータデータデータのののの約約約約46%%%%

(=(=(=(=54%%%%節約節約節約節約))))

圧縮前のページ数は8550ページ

INSPECTコマンドで見積もりを行う。

Page 52: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

52 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例: INSPECTコマンドによる圧縮率の見積もり (2/3)

[ymv95usr@sakura /home/ymv95usr]$ cd sqllib/db2dump

[ymv95usr@sakura /home/ymv95usr/sqllib/db2dump]$ db2inspf comp_estimate.dmp comp_estimate.out

[ymv95usr@sakura /home/ymv95usr/sqllib/db2dump]$ cat comp_estimate.out

DATABASE: SAMPLE

VERSION : SQL09051

2008-06-29-22.35.28.585619

アクション: ROWCOMPESTIMATE TABLE

スキーマ名: YMV95USR

表名: TBL_COMP

表スペース ID: 9 オブジェクト ID: 4

結果ファイル名: comp_estimate.dmp

表フェーズが開始しました。(ID 符号付き: 4、符号なし: 4; 表スペース ID: 9) : YMV95USR.TBL_COMP。

データ・フェーズが開始しました。 オブジェクト: 4、表スペース: 9。

行圧縮の推定結果:

圧縮により削減されるページのパーセンテージ: 55

圧縮により削減されるバイトのパーセンテージ: 55

コンプレッション・ディクショナリーのサイズ: 20736 バイト。

エクスパンション・ディクショナリーのサイズ: 32768 バイト。

データ・フェーズが終了しました。

表フェーズが終了しました。

処理が完了しました。 2008-06-29-22.35.59.728367

辞書のサイズの見積もり結果。(20736+32768=53504バイト)

圧縮によって節約されるページ、バイトのパーセンテージの見積もり結果。

INSPECT結果をフォーマットする。

Page 53: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

53 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

実行例: INSPECTコマンドによる圧縮率の見積もり (3/3)

[ymv95usr@sakura /home/ymv95usr/sqllib/db2dump]$ db2 alter table tbl_comp compress yes

DB20000I SQL コマンドが正常に完了しました。

[ymv95usr@sakura /home/ymv95usr/sqllib/db2dump]$ db2 reorg table tbl_comp resetdictionary

DB20000I REORG コマンドが正常に完了しました。

[ymv95usr@sakura /home/ymv95usr/sqllib/db2dump]$ db2 runstats on table ymv95usr.tbl_comp and indexes all

DB20000I RUNSTATS コマンドが正常に完了しました。

[ymv95usr@sakura /home/ymv95usr/sqllib/db2dump]$ db2 "select substr(tabname,1,20) as tabname, npages, fpages, compression,avgcompressedrowsize, avgrowcompressionratio, avgrowsize, pctpagessaved from syscat.tables where tabname='TBL_COMP'"

TABNAME NPAGES FPAGES COMPRESSION AVGCOMPRESSEDROWSIZE AVGROWCOMPRESSIONRATIO AVGROWSIZE PCTPAGESSAVED

-------------------- -------------------- -------------------- ----------- -------------------- ------------------------ ---------- -------------

TBL_COMP 3892 3898 R 31 +2.18797E+000 31 54

1 レコードが選択されました。

8550ページ→3892ページに圧縮された。約54%の節約。(見積もり結果は、55%)この中には、辞書のスペースも含まれる。

表のデータを圧縮する。

Page 54: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

54 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 55: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

55 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

2222....既存既存既存既存データデータデータデータのののの状況状況状況状況をををを踏踏踏踏まえたまえたまえたまえた圧縮率圧縮率圧縮率圧縮率をををを見積見積見積見積もるもるもるもる

�表関数表関数表関数表関数をををを使用使用使用使用しでしでしでしで圧縮率圧縮率圧縮率圧縮率をををを見積見積見積見積もるもるもるもる

� 表の行圧縮に関する情報を、データ・パーティションごとに見積もることが可能。

�ADMIN_GET_TAB_COMPRESS_INFO_V97表関数表関数表関数表関数

� 行圧縮の見積もりの他、行圧縮に関する情報の参照が可能。

� tabschema :スキーマ名

� tabname :表名

� execmode :実行モード

- ‘REPORT’ – 行圧縮に関する最新の情報を参照する。(デフォルト)

- ‘ESTIMATE’ – 現在現在現在現在のののの表表表表にもとづいてにもとづいてにもとづいてにもとづいて、、、、圧縮圧縮圧縮圧縮にににに関関関関するするするする新新新新しいしいしいしい情報情報情報情報をををを生成生成生成生成するするするする。。。。

>>-ADMIN_GET_TAB_COMPRESS_INFO--(--tabschema--,--tabname--,--exemode--)-><

Page 56: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

56 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

・・・・SALES01SALES01SALES01SALES01表表表表のののの表表表表サイズサイズサイズサイズをををを確認確認確認確認するするするする((((圧縮前圧縮前圧縮前圧縮前))))

$ db2 "select DATA_OBJECT_P_SIZE from SYSIBMADM.ADMINTABINFO where tabname='SALES01'"

DATA_OBJECT_P_SIZE

--------------------

7936

1 レコードが選択されました。

・・・・SALES01SALES01SALES01SALES01表表表表のののの件数件数件数件数をををを確認確認確認確認するするするする

$ db2 "select count(*) from sales01"

1

-----------

167936

1 レコードが選択されました。

圧縮前の表のサイズは7936KB

件数は、167936行

実行例:ADMIN_GET_TAB_COMPRESS_INFO_V97による見積もり (1/3)

�表関数を使用して圧縮率を見積もる

Page 57: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

57 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

・・・・ADMADMADMADMIN_GET_TAB_COMPRESS_INFOIN_GET_TAB_COMPRESS_INFOIN_GET_TAB_COMPRESS_INFOIN_GET_TAB_COMPRESS_INFO表関数表関数表関数表関数をををを使用使用使用使用しししし、、、、行圧縮行圧縮行圧縮行圧縮のののの見積見積見積見積もりをもりをもりをもりを行行行行うううう。。。。

$ db2 "select * from table (SYSPROC.ADMIN_GET_TAB_COMPRESS_INFO_V97('MAKIV95','SALES01','ESTIMATE')) as t"

TABSCHEMA

TABNAME

DBPARTITIONNUM DATA_PARTITION_ID COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTA

MP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE ROWS_SAMPLED PAGES_SAVED_PERCENT BYTES_SAVED_PERCENT AVG_COMPRESS_R

EC_LENGTH

----------------------------------------------------------------------------------------------------------------------

---------- -----------------------------------------------------------------------------------------------------------

--------------------- -------------- ----------------- ------------- ------------------------------ ------------------

-------- -------------------- -------------------- ------------ ------------------- ------------------- --------------

---------

MAKIV95

SALES01

0 0 N TABLE FUNCTION 2007-09-26-13.42.4

0.000000 13312 15088 167936 67 67

14

1 レコードが選択されました。

実行モードに‘ESTIMATE’を指定

表関数での見積もりによって辞書が作成された

圧縮によって67%節約可能

辞書サイズは、

13312バイト+15088バイト 全行使用して見積もりのための辞書が作成された

実行例:ADMIN_GET_TAB_COMPRESS_INFO_V97による見積もり (2/3)

Page 58: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

58 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

・・・・SALES01SALES01SALES01SALES01表表表表ををををCOMPRESS YESCOMPRESS YESCOMPRESS YESCOMPRESS YESにににに設定設定設定設定するするするする

$ db2 "alter table sales01 compress yes"

DB20000I SQL コマンドが正常に完了しました。

・・・・REORGREORGREORGREORGをををを実行実行実行実行しししし、、、、SALES01SALES01SALES01SALES01表表表表をををを圧縮圧縮圧縮圧縮するするするする

$ db2 reorg table sales01

DB20000I REORG コマンドが正常に完了しました。

・・・・ADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOADMINTABCOMPRESSINFOビュービュービュービューをををを参照参照参照参照しししし、、、、圧縮圧縮圧縮圧縮にににに関関関関するするするする情報情報情報情報をををを確認確認確認確認するするするする

$ db2 "select COMPRESS_ATTR, DICT_BUILDER, DICT_BUILD_TIMESTAMP, COMPRESS_DICT_SIZE, EXPAND_DICT_SIZE from SYSIBMADM.ADMINTABCOMPRESSINFO where tabname='SALES01'"

COMPRESS_ATTR DICT_BUILDER DICT_BUILD_TIMESTAMP COMPRESS_DICT_SIZE EXPAND_DICT_SIZE

------------- ------------------------------ -------------------------- -------------------- --------------------

Y REORG 2007-09-26-13.44.37.000000 13312 15088

1 レコードが選択されました。

$ db2 "select ROWS_SAMPLED, PAGES_SAVED_PERCENT, BYTES_SAVED_PERCENT, AVG_COMPRESS_REC_LENGTH from SYSIBMADM.ADMINTABCOMPRESSINFO

ROWS_SAMPLED PAGES_SAVED_PERCENT BYTES_SAVED_PERCENT AVG_COMPRESS_REC_LENGTH

------------ ------------------- ------------------- -----------------------

167936 67 67 14

1 レコードが選択されました。

・・・・SALES01SALES01SALES01SALES01表表表表のののの表表表表サイズサイズサイズサイズをををを確認確認確認確認するするするする((((圧縮後圧縮後圧縮後圧縮後))))

$ db2 "select DATA_OBJECT_P_SIZE from SYSIBMADM.ADMINTABINFO where tabname='SALES01'"

DATA_OBJECT_P_SIZE

--------------------

2816

1 レコードが選択されました。

REORGによって辞書が作成された辞書サイズは、見積もりと同じ値

節約された領域も、見積もりと同じ値

圧縮後の表のサイズは2816KB(7936KB→2816KB)

65%節約されている

実行例:ADMIN_GET_TAB_COMPRESS_INFO_V97による見積もり (3/3)

Page 59: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

59 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

3333....辞書辞書辞書辞書をををを新新新新しくしくしくしく再作成再作成再作成再作成してしてしてして、、、、データデータデータデータをををを圧縮圧縮圧縮圧縮するするするする

�既存既存既存既存データデータデータデータをををを再圧縮再圧縮再圧縮再圧縮するためにはするためにはするためにはするためには、、、、RESETDICTIONARYオプションオプションオプションオプション

をををを指定指定指定指定したしたしたした再編成再編成再編成再編成をををを実施実施実施実施するするするする。。。。

� REORG TABLEコマンドのデフォルトは、KEEPDICTIONARYオプショ

ンであるので、明示的にオプションを指定する必要がある。

� $ db2 reorg table tbl_comp index idx_comp_ranid use tempspace1 resetdictionary

Page 60: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

60 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 61: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

61 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

一時表一時表一時表一時表のののの圧縮圧縮圧縮圧縮

�V9.7の新機能

�一時表のために必要となるディスクスペースの削減が可能

�システム一時表、ユーザー一時表とも圧縮対象

�Storage Optimization Featureライセンスの登録によって自動的に有効化

�DB2のオプティマイザーが圧縮するかどうかを自動的に判断し、辞書作成と圧縮を行う

$ db2pd db2pd db2pd db2pd ----db sample db sample db sample db sample ––––temptabletemptabletemptabletemptable

System Temp Table Stats:Number of System Temp Tables : 5Comp Eligible Sys Temps : 2Compressed Sys Temps : 2Total Sys Temp Bytes Stored : 6831912Total Sys Temp Bytes Stored : 6831912Total Sys Temp Bytes Stored : 6831912Total Sys Temp Bytes Stored : 6831912Total Sys Temp Bytes Saved : 16868136Total Sys Temp Bytes Saved : 16868136Total Sys Temp Bytes Saved : 16868136Total Sys Temp Bytes Saved : 16868136Total Sys Temp Compressed Rows : 200000Total Sys Temp Table Rows: : 300002

User Temp Table Stats:Number of User Temp Tables : 0Comp Eligible User Temps : 0Compressed User Temps : 0Total User Temp Bytes Stored : 0Total User Temp Bytes Saved : 0Total User Temp Compressed Rows : 0Total User Temp Table Rows: : 0

Page 62: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

62 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 63: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

63 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

XML記述子記述子記述子記述子…PR28

…ACC

…PR27

DOC (XML)…ID

Regions

Index

索引索引索引索引オブジェクトオブジェクトオブジェクトオブジェクトデータデータデータデータ・・・・オブジェクトオブジェクトオブジェクトオブジェクト

XDAオブジェクトオブジェクトオブジェクトオブジェクト(XML Data)

XMLデータデータデータデータのののの圧縮圧縮圧縮圧縮

�2種類のXMLデータを圧縮できる

� XMLXMLXMLXMLデータデータデータデータ::::INLINEINLINEINLINEINLINE (V9.5(V9.5(V9.5(V9.5からからからから))))

� 基礎表に保持されたXMLデータ

� INLINE LENGTH キーワードが指定されたXML列で指定されたサイズより小さいデータは基礎表に保持される

→ 例: create table dept (deptID char(8),...,doc XMLXMLXMLXML inline length 10000inline length 10000inline length 10000inline length 10000)

� XMLXMLXMLXMLデータデータデータデータ::::XDAXDAXDAXDA (V9.7(V9.7(V9.7(V9.7新機能新機能新機能新機能))))

� XDAオブジェクトに保持されたXMLデータ

圧縮可圧縮可圧縮可圧縮可((((V9.5V9.5V9.5V9.5))))圧縮可圧縮可圧縮可圧縮可((((V9.7V9.7V9.7V9.7))))

Page 64: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

64 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

XMLデータデータデータデータのののの圧縮圧縮圧縮圧縮 ((((続続続続きききき ))))

�XDA圧縮辞書圧縮辞書圧縮辞書圧縮辞書のののの作成作成作成作成

� LOAD REPLACE

� REORG TABLE (RESETDICTIONARYオプション)

� Automatic Dictionary Creation (ADC)

�XDA圧縮辞書圧縮辞書圧縮辞書圧縮辞書がががが作成作成作成作成されないされないされないされないケースケースケースケース ((((SQL2220Wがががが返返返返されるされるされるされる))))

� REORG、LOAD REPLACEを実行したが、XDAオブジェクトが空の場合

� XMLデータがV9、V9.5からのマイグレーションによるものの場合

� V9.7版版版版ののののXDAフォーマットフォーマットフォーマットフォーマットにするためにするためにするためにするため、、、、表表表表のののの再作成再作成再作成再作成がががが必要必要必要必要

� ADMIN_MOVE_TABLEプロシージャープロシージャープロシージャープロシージャー((((新機能新機能新機能新機能))))をををを使用可能使用可能使用可能使用可能

Page 65: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

65 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

LOB記述子記述子記述子記述子…PR28

LOB記述子記述子記述子記述子…ACC

LOB記述子記述子記述子記述子…PR27

IMAGE(LOB)…ID

LOBデータデータデータデータのののの圧縮圧縮圧縮圧縮

�インラインインラインインラインインライン格納格納格納格納されたされたされたされたLOBデータデータデータデータをををを圧縮圧縮圧縮圧縮できるできるできるできる ((((V9.7新機能新機能新機能新機能)

�基礎表へ格納されたLOBデータは圧縮対象� INLINE LENGTH キーワードが指定されたLOB列で指定されたサイズより小さ

いデータは基礎表に保持される (V9.7新機能)

→ 例: create table dept (deptID char(8),...,doc CLOBCLOBCLOBCLOB inline length 10000inline length 10000inline length 10000inline length 10000)

�LOBオブジェクトに格納されたLOBデータは圧縮できません。

データデータデータデータ・・・・オブジェクトオブジェクトオブジェクトオブジェクト LOBオブジェクトオブジェクトオブジェクトオブジェクト

LOB記述子記述子記述子記述子…PR28

…ACC

…PR27

IMAGE(LOB)…ID

データデータデータデータ・・・・オブジェクトオブジェクトオブジェクトオブジェクト LOBオブジェクトオブジェクトオブジェクトオブジェクト

通常通常通常通常ののののLOB保持形態保持形態保持形態保持形態

インラインインラインインラインインライン格納格納格納格納をををを使用使用使用使用したしたしたしたLOB保持形態保持形態保持形態保持形態

LOBデータが基礎表に格納されている

Page 66: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

66 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

インラインインラインインラインインライン格納格納格納格納のののの圧縮効果一例圧縮効果一例圧縮効果一例圧縮効果一例

2

216

88

311

97

97

-

50

100

150

200

250

300

350

インライン格納無し インライン格納のみ インライン格納+圧縮

デー

タサイズ

LOB

データ

� 約約約約220MB、、、、10000個個個個ののののLOBデータデータデータデータををををデータベースデータベースデータベースデータベースにににに投入投入投入投入したしたしたした際際際際のののの圧縮効果圧縮効果圧縮効果圧縮効果

� 圧縮により格納時のサイズは310MBから約185MBに縮小された

� テストデータは圧縮効果の高いテキストを使用

154215421542154232323232~~~~50KB50KB50KB50KB

548854885488548816161616~~~~32KB32KB32KB32KB

25612561256125618888~~~~16KB16KB16KB16KB

4094094094098KB8KB8KB8KB以下以下以下以下

数数数数サイズサイズサイズサイズ

データサイズデータサイズデータサイズデータサイズのののの分布分布分布分布

約100MBはインライン格納対象外のデータ

インライン格納の対象データは、行圧縮により約60%圧縮された

MB

Page 67: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

67 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

LOBデータデータデータデータ インラインインラインインラインインライン格納格納格納格納のののの効果的効果的効果的効果的なななな使用法使用法使用法使用法

�一定比率一定比率一定比率一定比率ののののLOBデータデータデータデータががががページサイズページサイズページサイズページサイズよりよりよりより小小小小さいことさいことさいことさいこと

�すべてのLOBデータが32KBを越えるデータの場合、インライン格納を指

定しても効果無し

�インライン格納の比率を上げるため、ページサイズは32KBが推奨

0

200

400

600

800

1000

16 32 48 64 80 96 112

デー

タの

0

200

400

600

800

1000

16 32 48 64 80 96 112

デー

タの

◆◆◆◆インラインインラインインラインインライン格納格納格納格納がががが効果的効果的効果的効果的ななななデータデータデータデータほとんどのデータが32KB以下に分布して

いるため、基礎表への格納率が高い。

◆◆◆◆インラインインラインインラインインライン格納格納格納格納のののの効果効果効果効果がががが薄薄薄薄いいいいデータデータデータデータほとんどのデータが32KB以上に分布して

いるため、ほとんど基礎表へ格納されない。

Page 68: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

68 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

LOBデータデータデータデータををををインラインインラインインラインインライン格納格納格納格納するするするする

� CREATE TABLE時もしくはALTER TABLE時に、LOB列にINLINEキーワードを追加する。

� 指定できる長さの最大長は、ページサイズごとの行の最大長以下。(4KBページでは4005byte)

� 他の列を含めたトータルのレコード長が、制限値以下になるよう調整する。

� 表の新規作成時に指定する場合

� 既存の表のLOB列に対して追加する場合

� インライン格納が有効になっていることの確認

create table T1 (..., doc CLOB inline length 10000)

alter table T1 alter column doc set inline length 10000

select tabname, data_ob ect_p_size, lob_ob ect_p_size, data_ob ect_p_size + lob_ob ect_p_sizetotal_size from sysibmadm.admintabinfo where tabname like 'LOB '

TABNAME DATA_OBJECT_P_SIZE LOB_OBJECT_P_SIZE TOTAL_SIZE--------------- -------------------- -------------------- --------------------LOB1 2048 318464 320512LOB2_INLINE 221184 99328 320512LOB3_INCOMP 90112 99328 189440

3 record(s) selected.LOBデータサイズが小さく

なっていることが確認できる

Page 69: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

69 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

� インラインインラインインラインインライン化化化化されているかどうかをされているかどうかをされているかどうかをされているかどうかを示示示示すすすす関数関数関数関数

� columun name

� 基本表の列名

((((戻戻戻戻りりりり値値値値))))

� インラインインラインインラインインラインLOBののののデータデータデータデータ長長長長をををを確認確認確認確認するためのするためのするためのするための関数関数関数関数

� columun name

� 基本表の列名

(戻り値)

参考:新しい関数(ADMIN_IS_INLINE/ADMIN_EST_INLINE_LENGTH)

>>-ADMIN_IS_INLINLINED--(--columun-name--)-----------------------><

>>-ADMIN_EST_INLINE_LENGTH--(--columun-name--)-----------------------><

入力入力入力入力ががががNULLであることをであることをであることをであることを示示示示すすすすNUL

L

データデータデータデータががががインラインインラインインラインインライン化化化化されていないことをされていないことをされていないことをされていないことを示示示示すすすす0

データデータデータデータががががインラインインラインインラインインライン化化化化されていることをされていることをされていることをされていることを示示示示すすすす1

バージョンバージョンバージョンバージョン9.7よりよりよりより前前前前ののののバージョンバージョンバージョンバージョンのときにのときにのときにのときに挿入挿入挿入挿入されたされたされたされたデータデータデータデータのためのためのためのため判別不可判別不可判別不可判別不可能能能能であることをであることをであることをであることを示示示示すすすす

-2

データデータデータデータががががインラインインラインインラインインライン化化化化されていないことをされていないことをされていないことをされていないことを示示示示すすすす-1

データデータデータデータのののの見積見積見積見積もりもりもりもりインラインインラインインラインインライン長長長長数値数値数値数値

Page 70: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

70 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

� INLINEに入りきらないLOBデータは今までどおりLOBオブジェクトに格納される

� LOBをINLINE化することにより、1ページ内に格納できる行数が少なくなるため、LOB列を照会結果に含めない場合は今までよりもパフォーマンスが劣化する可

能性がある

� INLINE化されたLOBデータはロギングの対象となる

� INLINE化されたLOBデータを含む表のデータ再編成の処理時間はINLINE化し

ない場合よりも延びる傾向がある。また、圧縮をする場合は更に延びる傾向にある。

LOBデータデータデータデータ インラインインラインインラインインライン格納格納格納格納 使用上使用上使用上使用上のののの考慮点考慮点考慮点考慮点

Page 71: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

71 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

レプリケーションレプリケーションレプリケーションレプリケーション・・・・ソースソースソースソース表表表表ののののサポートサポートサポートサポート

DB2ReadLogAPI

ディクショナリ

V9.7ログ

Compressed data

Uncompressed data

�レプリケーションレプリケーションレプリケーションレプリケーションののののソースソースソースソース表表表表をををを圧縮圧縮圧縮圧縮できるできるできるできる ((((V9.7新機能新機能新機能新機能))))� 行圧縮した表にData Capture Chages属性を付与可能

� V9.5まではData Capture Changes属性が表に付与できない(SQL0270N)� XML列の圧縮もサポート

�Data Capture Changes属性が付与された表は1世代前の辞書を保持す

� Captureの処理が遅れている場合に辞書が再作成されても1世代前の辞書を

使用して変更収集を継続可能

Page 72: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

72 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

1世代前世代前世代前世代前のののの辞書辞書辞書辞書をををを保持保持保持保持するするするする

影響なし、全行圧縮解除されるNN

辞書が除去され、全行圧縮解除されるYN

辞書が新規作成され、行が圧縮されるNY

辞書が再作成され、行が圧縮されるYY

結果辞書が存在するかCOMPRESS

�REORG RESETDICTIONARY

� Data Capture Changes属性が付与されている場合は再作成時に古い辞書は保持される

� INSPECTコマンドにてHistorical Dictionaryの有無を判断可能

Table phase start (ID Signed: 4, Unsigned: 4; Tablespace ID: 2) : DB2V97.T1

Data phase start. Object: 4 Tablespace: 2

The index type is 2 for this table.

Traversing DAT extent map, anchor 1088.

Extent map traversal complete.

Expansion dictionary size: 32768 bytes.

Compression dictionary size: 19712 bytes.

Historical expansion dictionary size: 32768 bytes.

DAT Object Summary: Total Pages 291 - Used Pages 272 - Free Space 0 %

Data phase end.

Page 73: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

73 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:辞書が使用できない場合のQCaptureメッセージ (SUBが非活動化)

2009-03-31-10.52.42.214736 ASN7000I "Q Capture" : "ASN" : "WorkerThread" : "1" subscriptions are active. "0" subscriptions are inactive. "0" subscriptions that were new and were successfully activated. "0" subscriptions that were new could not be activated and are now inactive.

2009-03-31-10.52.42.215126 ASN0572I "Q Capture" : "ASN" : "WorkerThread" : The "mqpub 9.7.4" program initialized successfully.

2009-03-31-10.52.43.267414 ASN0011E CAPTURE "ASN" : "WorkerThread". The Capture program log read failed because the DB2 compression dictionary that was used to create the compressed log record no longer exists. The log record that could not be readwas for the registered source table "DB2V97.T1". The reason code is "*".

2009-03-31-10.52.46.357447 ASN7133I "Q Capture" :"ASN" : "WorkerThread" : The publication or Q Subscription "SUB1" was stopped.

2009-03-31-10.53.48.414995 ASN7019I "Q Capture" : "ASN" : "WorkerThread" : "CAPSTART" signal was received and will be processed.

2009-03-31-10.53.48.436288 ASN7017I "Q Capture" : "ASN" : "WorkerThread" : The target table "DB2V97.T1_COPY" is ready to be loaded from source table "DB2V97.T1" for publication or Q subscription "SUB1".

ASN0011E Explanation:

The Capture program received an error from the DB2 log read interface.

The reason code is from DB2 and indicates that the data in a log record

cannot be processed because the compression dictionary for the

corresponding DB2 table or table space is permanently gone. The

compressed table or table space containing this source table was

probably reorganized by the REORG utility that ran without the

KEEPDICTIONARY option. The Capture program cannot read the remaining

compressed log records from source changes that occurred before the

REORG. The Capture program follows the option that was specified for

Stop Capture on Error (Replication Center) or STOP ON ERROR (ASNCLP

command-line program) for this registration.

Page 74: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

74 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 75: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

75 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

索引索引索引索引のののの圧縮圧縮圧縮圧縮のののの内容内容内容内容

�索引の圧縮の概要

�索引の圧縮の使用方法

�XML索引の圧縮

�索引圧縮に関する表関数

V9.7新機能

Page 76: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

76 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

索引索引索引索引のののの圧縮圧縮圧縮圧縮のののの概要概要概要概要

�3333つのつのつのつの手法手法手法手法によるによるによるによる索引自動圧縮索引自動圧縮索引自動圧縮索引自動圧縮

� 可変長のスロット・ディレクトリー

� 前方一致部分の圧縮

� RIDリストの圧縮

索引索引索引索引ページページページページ 圧縮圧縮圧縮圧縮されたされたされたされた索引索引索引索引ページページページページ

ページ ッ ーページ ッ ーページ ッ ーページ ッ ー

スロットスロットスロットスロットDirDirDirDir

AA 1 山田山田山田山田

AA 2 鈴木鈴木鈴木鈴木

AA 3 伊藤伊藤伊藤伊藤

ページ ッ ーページ ッ ーページ ッ ーページ ッ ー

スロットスロットスロットスロットDirDirDirDir

1 山田山田山田山田

2 鈴木鈴木鈴木鈴木

3 伊藤伊藤伊藤伊藤

可変長可変長可変長可変長ののののスロットスロットスロットスロット・・・・ディレクトリーディレクトリーディレクトリーディレクトリー

ページに格納されるキーの数によってスロット・ディレクトリーの長さを変動できるようにした。

前方一致部分前方一致部分前方一致部分前方一致部分のののの圧縮圧縮圧縮圧縮

各キーで共通な前方一致部分を圧縮

RIDRIDRIDRIDリストリストリストリストのののの圧縮圧縮圧縮圧縮

各エントリーのRID(ページ番号+Slot番号)を保管する代わりに差分情報を保管するように変更

Page 77: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

77 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

索引索引索引索引のののの圧縮圧縮圧縮圧縮 ---- 前方一致部分前方一致部分前方一致部分前方一致部分のののの圧縮圧縮圧縮圧縮

�各キーで共通な前方一致部分を圧縮

�列の境界は無関係

(AA, 1, )

(AA, 2, )

(AA, 3, )

(BB, 1, )

(BB, 1, )

索引索引索引索引キーキーキーキーのののの値値値値 圧縮圧縮圧縮圧縮されたされたされたされた索引索引索引索引にににに格納格納格納格納されるされるされるされるデータデータデータデータ

(AA, 1, )(, 2, )(, 3, )(BB, 1, )(,, )

前方一致部分前方一致部分前方一致部分前方一致部分をををを省略省略省略省略してしてしてして保管保管保管保管

Page 78: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

78 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

RID リストリストリストリストのののの圧縮圧縮圧縮圧縮

�Large表スペース上の表のPage4に、同じKeyValueの行が10行入っているケース

<00 00 00 04, 00 00>, <00 00 00 04, 00 01>, <00 00 00 04, 00 02>,

<00 00 00 04, 00 03>, <00 00 00 04, 00 04>, <00 00 00 04, 00 05>,

<00 00 00 04, 00 06>, <00 00 00 04, 00 07>, <00 00 00 04, 00 08>,

<00 00 00 04, 00 09>

●圧縮していない索引

●圧縮した索引

<00 00 00 04, 00 00>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1><1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1><1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1><1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>, <1>

RID間のDelta情報のみを記録

Page 79: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

79 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

索引圧縮索引圧縮索引圧縮索引圧縮のののの使用方法使用方法使用方法使用方法

1. 索引索引索引索引のののの COMPRESS属性属性属性属性をををを YESにににに設定設定設定設定するするするする

� 索引の作成、もしくは、索引定義の変更で設定可能

� CREATE INDEX / ALTER INDEXのCOMPRESS YESオプション

� ALTER INDEXでCOMPPRESS YESを指定しただけでは圧縮は行われないので、索引の再編成が必要です

� COMPRESS YESで定義された表に作成された索引はデフォルトで圧縮対象になります

� COMPRESS NOで定義された表に作成する索引はデフォルトで非圧縮

� CREATE INDEX / ALTER INDEXのオプションでオーバーライドできる

2. 索引索引索引索引をををを再編成再編成再編成再編成するするするする� REORG INDEXES ALL FOR TABLE 表名

� 再編成以外に索引がRebuildされるような操作であれば圧縮される

� 表の再編成(シャドウコピー)、Loadなど

Page 80: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

80 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考)索引圧縮の使用方法

� 索引圧縮を使用する場合

� CREATE INDEX、ALTER INDEXのCOMPRESS YESオプション使用

� MDCブロック索引, カタログ表の索引, index specifications, XMLパス索引は圧縮対象外

� CREATE TABLEステートメントでCOMPRESS YESオプションを指定した場合、その表に作成する索引はすべて圧縮対象となる

� CREATE TABLEステートメントでCOMPRESS NOとした場合はその表に作成する索引はすべて非圧縮

� 非圧縮にしたい場合は、ALTER INDEXで変更が可能

� 索引圧縮の解除方法

� ALTER INDEXのCOMPRESS NOオプション

� ALTER後のREORG INDEXESが終了するまで圧縮されたままとなる

CREATE INDEX X01 ON T01 (C01) COMPRESS YES

CREATE INDEX X02 ON T02 (C02)ALTER INDEX X02 COMPRESS YESREORG INDEXES ALL FOR TABLE T02

ALTER INDEX X02 COMPRESS NOREORG INDEXES ALL FOR TABLE T02

Page 81: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

81 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

索引圧縮索引圧縮索引圧縮索引圧縮のののの使用使用使用使用をやめるをやめるをやめるをやめる方法方法方法方法

1. 索引索引索引索引のののの COMPRESS属性属性属性属性をををを NOにににに設定設定設定設定するするするする

� ALTER INDEXで定義する

� 索引を再編成を実行するまで索引は圧縮されたまま

2. 索引索引索引索引をををを再編成再編成再編成再編成するするするする

� REORG INDEXES ALL FOR TABLE 表名

Page 82: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

82 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

索引圧縮索引圧縮索引圧縮索引圧縮のののの条件条件条件条件

圧縮圧縮圧縮圧縮圧縮圧縮圧縮圧縮ALTER INDEX COMPRESS YES

非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮CREATE INDEXCOMPRESS NO

非圧縮非圧縮非圧縮非圧縮圧縮圧縮圧縮圧縮CREATE INDEX COMPRESS指定なし

非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮DB マイグレーション

非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮非圧縮ALTER INDEX COMPRESS NO

圧縮圧縮圧縮圧縮圧縮圧縮圧縮圧縮CREATE INDEXCOMPRESS YES

非圧縮表圧縮表

※表の圧縮属性を変更しても、変更時点で既に存在している索引の圧縮属性は変更されない

Page 83: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

83 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

圧縮効率の高い索引は?� 索引索引索引索引キーキーキーキーのののの合計長合計長合計長合計長がががが長長長長いいいい、、、、またはまたはまたはまたは索引索引索引索引キーキーキーキーののののカーディナリティカーディナリティカーディナリティカーディナリティがががが低低低低いいいい索引索引索引索引

� 1ページに格納される索引キー・エントリーの数が少なく、スロット・ディレクトリーを短くすることができる

� 重複重複重複重複データデータデータデータがががが前方前方前方前方ののののキーキーキーキー列列列列にににに多多多多いいいい索引索引索引索引

� 前方一致部分の圧縮が期待できる

� DATE列などは圧縮率は高い

� クラスタークラスタークラスタークラスター率率率率のののの高高高高いいいい索引索引索引索引

� RIDリスト上の各RID間の差分が小さいため、RIDリストの圧縮率が高くなる

28 28 28 28 ((((----56%56%56%56%))))

63636363

500

50000

INT、CHAR(100)、CHAR(100)

非ユニーク索引

索引B

9(----25%)

12

2547

2547

DATE

ユニーク索引

索引C

1471 (1471 (1471 (1471 (±±±±0%0%0%0%))))

リーフ

ページ数

圧縮

1471147114711471

リーフ

ページ数

非圧縮

50000Full Key Card

50000挿入レコード数

INT、CHAR(100)、CHAR(100)キー列

ユニーク索引索引種別

索引A

圧縮圧縮圧縮圧縮のののの効果無効果無効果無効果無しししし

圧縮圧縮圧縮圧縮のののの効果有効果有効果有効果有

圧縮圧縮圧縮圧縮のののの効果有効果有効果有効果有

Page 84: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

84 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 85: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

85 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

XML索引索引索引索引のののの圧縮圧縮圧縮圧縮

�圧縮圧縮圧縮圧縮のののの対象対象対象対象となるとなるとなるとなるXML 索引索引索引索引

((((注注注注))))XML索引索引索引索引ははははALTER INDEXによるによるによるによるCOMPRESS YES/NOのののの切替切替切替切替ができないができないができないができない(GA版版版版)

� XML索引の実体を表すPhysical IndexをALTERする必要があるが、Physical Indexに対してはALTER INDEXが発行不可

XML Region IndexXML Region Index� 圧縮対象圧縮対象圧縮対象圧縮対象

� 表作成時にCOMPRESS YESの設定要

� ALTER INDEXでの切替不可

XML Path IndexXML Path Index � 圧縮圧縮圧縮圧縮のののの対象外対象外対象外対象外

XML IndexXML Index � 圧縮対象圧縮対象圧縮対象圧縮対象� 索引作成時に指定要

� ALTER INDEXでの切替不可

OKOKOKOKOKOKOKOK

OKOKOKOKOKOKOKOK

FP1でででで修正修正修正修正予定予定予定予定

FP1でででで修正修正修正修正予定予定予定予定

Page 86: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

86 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

10GBのXMLデータを 入した の

9.8

19.1

8.8 8.4

0.0

5.0

10.0

15.0

20.0

25.0

データ 圧縮 圧縮 圧縮(+REORG)

デー

タ量

[

GB

]

参考:日本語を含むXMLデータでの圧縮例

� 公開特許公報のXMLデータを使用(日本語による特許記述の文章を含む)

� XMLファイル数約27万件、平均サイズ38KB

� ファイルのコードページはEUC、DB中ではUTF-8で格納される

約約約約45%のののの圧縮効果圧縮効果圧縮効果圧縮効果約約約約45%のののの圧縮効果圧縮効果圧縮効果圧縮効果生生生生データデータデータデータとほぼとほぼとほぼとほぼ同等同等同等同等ののののストレージサイズストレージサイズストレージサイズストレージサイズ

でででで格納可能格納可能格納可能格納可能

生生生生データデータデータデータとほぼとほぼとほぼとほぼ同等同等同等同等ののののストレージサイズストレージサイズストレージサイズストレージサイズ

でででで格納可能格納可能格納可能格納可能

� 長いテキストデータを多く含むXMLデータでの例

� 圧縮効率が高く、生データよりも小さなサイズでDB内に保持されている

データデータデータデータははははXML列列列列にににに格納格納格納格納するするするする際際際際のののの構造化構造化構造化構造化によりによりによりにより生生生生(テキストテキストテキストテキスト)データデータデータデータにににに対対対対してしてしてして

2-3倍倍倍倍にににに膨張膨張膨張膨張

圧縮圧縮圧縮圧縮によってによってによってによって、、、、生生生生データデータデータデータとととと同等同等同等同等ないしないしないしないし、、、、それそれそれそれ以下以下以下以下

になっているになっているになっているになっている

データデータデータデータははははXML列列列列にににに格納格納格納格納するするするする際際際際のののの構造化構造化構造化構造化によりによりによりにより生生生生(テキストテキストテキストテキスト)データデータデータデータにににに対対対対してしてしてして

2-3倍倍倍倍にににに膨張膨張膨張膨張

圧縮圧縮圧縮圧縮によってによってによってによって、、、、生生生生データデータデータデータとととと同等同等同等同等ないしないしないしないし、、、、それそれそれそれ以下以下以下以下

になっているになっているになっているになっている

Page 87: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

87 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:日本語を含むXMLデータでの圧縮効果

� XML索引の圧縮

� 数値型、テキスト型で索引の圧縮率に大きな差はない

� 共に、20-30%程度の圧縮率

索引 との圧縮

0

500

1,000

1,500

2,000

2,500

Regions

Index

Paths

Index

XIX_D1 XIX_D2 XIX_D3 XIX_VC1 XIX_VC2 XIX_VC3 XIX_VC4 XIX_VC5 XIX_VC7 XIX_VC8

デー

タ量

[

MB

]

圧縮あり

圧縮無し

Page 88: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

88 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:日本語を含むXMLデータでの圧縮効果

� XML索引の圧縮

による いStringVARCHAR162,2541,903XIX_VC8

による いStringVARCHAR4814978XIX_VC7

による いStringVARCHAR HASED

12401353XIX_VC5

による いStringVARCHAR17428357XIX_VC4

による いStringVARCHAR18905742XIX_VC3

による いStringVARCHAR2510578XIX_VC2

による いStringVARCHAR000XIX_VC1

1~3 度の数値IDDouble319968XIX_D3

YYYYMMDD の 付データDouble31574396XIX_D2

Double000XIX_D1

N/A000Paths Index

N/A365535Regions Index

圧縮無し圧縮あり考データ

圧縮率

容量[MB]索引名

Page 89: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

89 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

� ADMIN_GET_INDEX_COMPRESS_INFO表関数表関数表関数表関数

� objecttype

� オブジェクトタイプ(表:’T’ or NULL、索引:’I’ )

� objectschema

� オブジェクトのスキーマ名

� objectname

� オブジェクト名(case-sensitive)

� dbpartitionnum

� データベース・パーティション番号(非データベース・パーティション環境:’-2’ or NULL)

� datapartitionud

� データ・パーティション番号(非データ・パーティション環境:’-2’ or ‘0’or NULL)

� 圧縮属性圧縮属性圧縮属性圧縮属性やややや圧縮圧縮圧縮圧縮することでどれくらいすることでどれくらいすることでどれくらいすることでどれくらいページページページページをををを節約節約節約節約できるかなどをできるかなどをできるかなどをできるかなどを確認確認確認確認するするするすることがことがことがことが可能可能可能可能

圧縮索引圧縮索引圧縮索引圧縮索引のののの情報情報情報情報をををを取得取得取得取得するするするする ((((1/2)

>>-ADMIN_GET_INDEX_COMPRESS_INFO--(--objecttype--,--objectschema--,--objectname--,-->

>--dbpartitionnum--,--datapartitionid--)-----------------------><

V9.7New

Page 90: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

90 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:ADMIN_GET_INDEX_COMPRESS_INFO表関数で取得可能な情報

圧縮されていない場合:圧縮された場合の見積パーセント

圧縮されている場合:システム・カタログ・ビュー (SYSCAT.INDEXES またはSYSCAT.INDEXPARTITIONS のいずれか) からの PCTPAGESSAVED 値をレポートします。

PCT_PAGED_SAVED

物理索引形式 Y=圧縮形式である、N=圧縮形式ではないINDEX_COMPRESSED

索引COMPRESSION属性の状態 Y=索引圧縮は使用可能、N=索引圧縮は使用不可COMPRESS_ATTR

データベース・バーティションIDDATAPARTITIONID

圧縮されていない場合:圧縮された場合に節約されるリーフページの見積パーセント

圧縮されている場合:システム・カタログ・ビュー(SYSCAT.INDEXES またはSYSCAT.INDEXPARTITIONS のいずれか) から PCTPAGESSAVED および NLEAF 値に基づいて、節約される計算済みリーフ・ページ数をレポートします

NUM_LEAF_PAGES_SAVED

索引IDIID

データベース・パーティション番号DBPARTITIONNUM

表名TABNAME

表のスキーマ名TABSCHEMA

索引名INDNAME

索引のスキーマ名INDSCHEMA

説明項目名

Page 91: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

91 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

� Objecttype

� オブジェクトタイプ(表:’T’ or NULL、索引:’I’ )

� Objectschema

� オブジェクトスキーマ

� Objectname

� オブジェクト名

� 索引毎索引毎索引毎索引毎のののの圧縮情報圧縮情報圧縮情報圧縮情報、、、、そのそのそのその表表表表におけるにおけるにおけるにおける索引索引索引索引サイズサイズサイズサイズなどをなどをなどをなどを確認可能確認可能確認可能確認可能

圧縮索引圧縮索引圧縮索引圧縮索引のののの情報情報情報情報をををを取得取得取得取得するするするする ((((1/2)

>>-ADMIN_GET_INDEX_INFO--(--objecttype--,,--objectschema--,--objectname--)------------------------------><

� ADMIN_GET_INDEX_INFO表関数表関数表関数表関数

V9.7New

Page 92: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

92 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考:ADMIN_GET_INDEX_INFO表関数で取得可能な情報

索引の再作成の状況。

Y=表またはデータ・パーティションで定義される索引で再編成が必要、N=それ以外

INDEX_REQUIRES_REBUILD

索引オブジェクトの論理サイズ、表に定義されている全ての索引オブジェクトに論理的に割り当てられるディスクスペースの量。

INDEX_OBJECT_L_SIZE

索引オブジェクトの物理サイズ、表に定義されている全ての索引オブジェクトに物理的に割り当てられるディスクスペースの量。

INDEX_OBJECT_P_SIZE

索引のパーティション特性 N=非パーティション索引、P=パーティション索引、ブランク=索引はパーティション表にはない

INDEX_PARTITONING

物理索引形式 Y=圧縮形式である、N=圧縮形式ではないINDEX_COMPRESSED

索引COMPRESSION属性の状態 Y=索引圧縮は使用可能、N=索引圧縮は使用不可COMPRESS_ATTR

データベース・バーティションIDDATAPARTITIONID

索引がラージ行 ID (RID) を使用しているかどうか

Y=索引がラージRIDを使用している、N=索引がラージRIDを使用していない

P=索引がラージRIDをサポートしているが、再編成、または再作成されていないため4バイトRIDを使用している。ラージRIDに変換するアクションをとる必要がある

LARGE_RIDS

索引IDIID

データベース・パーティション番号DBPARTITIONNUM

表名TABNAME

表のスキーマ名TABSCHEMA

索引名INDNAME

索引のスキーマ名INDSCHEMA

説明項目名

Page 93: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

93 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

$ db2 "select count(*) from lineitem1"

1-----------

550410

1 record(s) selected.

$ db2 "select L_RECEIPTDATE from lineitem1 fetch first 6 rows only"

L_RECEIPTDATE

-------------

1997-12-05

1997-11-09

1993-09-18

6 record(s) selected.

$ db2 "create index id1 on lineitem1(L_RECEIPTDATE)"

DB20000I The SQL command completed successfully.

$db2 "select substr(indname,1,5) as indname,substr(tabname,1,10) as tabname,compress_attr,index_compressed,pct_pages_saved,num_leaf_pages_saved from table (admin_get_index_compress_info('I','IWA97','ID1','-2','-2')) as t"

INDNAME TABNAME COMPRESS_ATTR INDEX_COMPRESSED PCT_PAGES_SAVED NUM_LEAF_PAGES_SAVED

------- ---------- ------------- ---------------- --------------- --------------------

ID1 LINEITEM1 N N 48 599

1 record(s) selected.

実行例 1/3

まだ索引圧縮になっていない

非圧縮の場合、圧縮で節約されるリーフページの見積もりが表示される

Page 94: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

94 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

$ db2 alter index id1 compress yes

DB20000I The SQL command completed successfully.

$ db2 "select substr(indname,1,5) as indname,substr(tabname,1,10) as tabname,compress_attr,index_compressed,pct_pages_saved,num_leaf_pages_saved from table (admin_get_index_compress_info('I','IWA97','ID1','-2','-2')) as t"

INDNAME TABNAME COMPRESS_ATTR INDEX_COMPRESSED PCT_PAGES_SAVED NUM_LEAF_PAGES_SAVED

------- ---------- ------------- ---------------- --------------- --------------------

ID1 LINEITEM1 Y N 48 599

1 record(s) selected.

$ db2 "select substr(tabname,1,10) as tabname,substr(indname,1,5) as indname,INDEX_OBJECT_P_SIZE from table(admin_get_index_info('','IWA97','LINEITEM1')) as t"

TABNAME INDNAME INDEX_OBJECT_P_SIZE

---------- ------- --------------------

LINEITEM1 ID1 10240

1 record(s) selected.

$ db2 "reorg indexes all for table iwa97.lineitem1"

DB20000I The REORG command completed successfully.

実行例 2/3

索引圧縮がONになっているが、まだ物理的に圧縮されていない(INDEX_COMPRESSED がN)状態

物理的に非圧縮の場合、節約されるリーフページの見積もりが表示される

この表の全索引に必要な物理サイズが10240バイト

Page 95: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

95 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

$ db2 runstats on table iwa97.lineitem1 and indexes all

DB20000I The RUNSTATS command completed successfully.

$ db2 "select substr(indname,1,5) as indname,substr(tabname,1,10) as tabname,compress_attr,index_compressed,pct_pages_saved,num_leaf_pages_saved from table (admin_get_index_compress_info('I','IWA97','ID1','-2','-2')) as t"

INDNAME TABNAME COMPRESS_ATTR INDEX_COMPRESSED PCT_PAGES_SAVED NUM_LEAF_PAGES_SAVED

------- ---------- ------------- ---------------- --------------- --------------------

ID1 LINEITEM1 Y Y 49 525

1 record(s) selected.

$ db2 "select substr(tabname,1,10) as tabname,substr(indname,1,5) as indname,INDEX_OBJECT_P_SIZE from table(admin_get_index_info('','IWA97','LINEITEM1')) as t"

TABNAME INDNAME INDEX_OBJECT_P_SIZE

---------- ------- --------------------

LINEITEM1 ID1 2432

1 record(s) selected.

実行例 3/3

索引圧縮後のシステム・カタログ・ビューのPCTPAGESSAVEDの値

が入る

この表の全索引に必要な物理サイズが2432バイトに減った

Page 96: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

96 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 97: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

97 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

使用上使用上使用上使用上のののの考慮点考慮点考慮点考慮点

�MDCブロック索引, カタログ表の索引, index specifications, XMLパス索引は圧縮対象外

�圧縮表に対して新しく作成する索引は、明示的にCOMPRESS NOを指定しない限り、圧縮索引となる。

� 一度圧縮索引として作成されたものを非圧縮に戻したい場合には、COMPRESS NOを指定してALTER INDEXを実行し、さらに索引再編成を行う。

�非圧縮表に対して新しく作成する索引は、明示的にCOMPRESS YESを指定しない限り、非圧縮索引となる。

� 一度非圧縮索引として作成されたものを圧縮したい場合には、COMPRESS YESを指定してALTER INDEXを実行し、さらに索引の再編成を行う。

�圧縮表の定義されたV9.1、V9.5のデータベースをV9.7に移行しても、索引圧縮は行われない。

� 索引圧縮を行うには、ALTER INDEX・・・COMPRESS YES、およびREORG INDEXを実行する

Page 98: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

98 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。

Page 99: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

99 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考資料参考資料参考資料参考資料�圧縮関連圧縮関連圧縮関連圧縮関連のののの情報情報情報情報リンクリンクリンクリンク

�フィーチャーフィーチャーフィーチャーフィーチャーについてについてについてについて

�圧縮圧縮圧縮圧縮 FAQ: FAQ: FAQ: FAQ: よくあるよくあるよくあるよくある質問質問質問質問とそのとそのとそのとその回等集回等集回等集回等集

Page 100: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

100 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考参考参考参考::::圧縮関連圧縮関連圧縮関連圧縮関連のののの情報情報情報情報�技術情報技術情報技術情報技術情報

� [W/S資料: DB2 9 新機能ワークショップ資料 大規模DB対応強化 - Row Compression(行圧縮機能)]

http://www-06.ibm.com/jp/domino01/mkt/dminfo.nsf/doc/004D44E6

� [W/S資料: DB2 9.5 技術資料 第2章 管理機能強化 - 行圧縮機能強化]

http://www-06.ibm.com/jp/domino01/mkt/dminfo.nsf/doc/001BED48

� [W/S資料: DB2 9.7 for LUW新機能ワークショップ資料]

http://w3-06.ibm.com/jp/domino02/ise/ISEINFO.NSF/WSMat?OpenView

� BestPractice

http://www.ibm.com/developerworks/db2/library/techarticle/dm-0509poon/

� DB2 Compression Estimator and ROI Calculatorツールhttps://w3-03.ibm.com/sales/competition/compdlib.nsf/weball/2F06537B95D75A1200257234004D7F92?OpenDocument

�パフォーマンスパフォーマンスパフォーマンスパフォーマンス情報情報情報情報

� [DB2 9圧縮機能の使用事例と効果(圧縮率、パフォーマンス、コスト)]

http://www-06.ibm.com/jp/domino01/mkt/dminfo.nsf/doc/0050931A

� [DB2 V9.7検証報告 圧縮機能]

近日公開予定 (公開されましたら更新します)2009/07/03現在

Page 101: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

101 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考参考参考参考::::フィーチャーフィーチャーフィーチャーフィーチャーについてについてについてについて

� データデータデータデータ行圧縮行圧縮行圧縮行圧縮、、、、一時表圧縮一時表圧縮一時表圧縮一時表圧縮、、、、索引圧縮機能索引圧縮機能索引圧縮機能索引圧縮機能をををを利用利用利用利用するためにはするためにはするためにはするためには

� ESEかつ「Storage Optimization Feature」を導入する必要がある

� 参考)DB2V9.7 発表レターhttp://w3-06.ibm.com/jp/domino02/NewAIS/aisintr4.nsf/ByLetterNo/DBA09066?OpenDocument&ExpandSection=1

� 3) IBM DB2 9.7, Enterprise Edition のののの有料有料有料有料フィーチャーフィーチャーフィーチャーフィーチャー

� 3.1) IBM DB2 Storage Optimization Feature for Linux, UNIX, and Windows: このフィーチャーには、データ行圧縮およびその他の圧縮タイプの両方が含まれており、既存のストレージを最大限に利用するこ

とができます。→ データ行圧縮は、行ごとにデータを圧縮するときに静的辞書ベースの圧縮アルゴリズムを使用しま

す。 行レベルでデータを圧縮すると、1 つの行内の複数の列値にまたがる反復パターンをより短いシンボル・ストリングで置き換えることが可能となり、パフォーマンスが向上するために有利です。入出力制約のシステムにおいては、ストレージ要件が削減されるだけでなく、全体的なパフォーマンスが向上する可能性があります。

→ 索引圧縮は、複数のアルゴリズムを使用して、索引のストレージ要件を抑え、DB2 データベースの合計ストレージ占有スペースを削減します。

→ 一時圧縮は、一時表に使用するスペース量を自動的に圧縮します。 この自動化された圧縮により、大規模な一時表を使用したビジネス・インテリジェンス・ワークロードのパフォーマンスを改善するとともに、DB2 で必要な合計ストレージを削減できます。

→ プログラム料金: このフィーチャーは、DB2 Enterprise 専用のオプションとして提供されます。基礎となる DB2 データ・サーバーがプロセッサー課金単位を使用してライセンス許諾されている場合にのみ取得できます

Page 102: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

102 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考参考参考参考::::圧縮圧縮圧縮圧縮 FAQ: よくあるよくあるよくあるよくある質問質問質問質問とそのとそのとそのとその回等集回等集回等集回等集� Q001. 圧縮効果圧縮効果圧縮効果圧縮効果についてについてについてについて

� 繰り返しのデータが多い場合に圧縮の効果が得やすいです。繰り返しが少ないデータは圧縮の効果が少なくなります。

� Q002. 行圧縮行圧縮行圧縮行圧縮によるによるによるによるパフォーマンスパフォーマンスパフォーマンスパフォーマンスのののの効果効果効果効果とととと影響影響影響影響はははは????

� I/Oバウンドのシステムでは、データページの圧縮によりバッファープールのヒット率が向上し、またログ・ファイルへの書き出し量が削減されパフォーマンスの向上が期待できます。逆に、既にCPUバウンドのシステムでは、CPUネックとなる可能性があります。また更新処理(UPDATE)については部分的な圧縮による列長の変化により、結果的にログ量が増える場合があるため要注意です。参照系で特にお勧めです。

� Q003. 行圧縮行圧縮行圧縮行圧縮をををを設定設定設定設定したしたしたした場合場合場合場合ののののCPUオーバーヘッドオーバーヘッドオーバーヘッドオーバーヘッドはどれくらいかはどれくらいかはどれくらいかはどれくらいか????

� [DB2 9圧縮機能の使用事例と効果(圧縮率、パフォーマンス、コスト)]を参照してください・

http://www-06.ibm.com/jp/domino01/mkt/dminfo.nsf/doc/0050931A

� Q004. 行圧縮行圧縮行圧縮行圧縮とととと一緒一緒一緒一緒にににに使用使用使用使用できるできるできるできる機能機能機能機能はははは????

� パーティション表 →はい、出来ます。

� HADR →はい、出来ます。

� レプリケーション →はい、出来ます。ただし、ソース表はV9.7から。

� 一時表 →はい、出来ます。ただし、V9.7から。

� レンジクラスター表 →いいえ、出来ません。

� カタログ表 →いいえ、出来ません。

� Q005. 辞書辞書辞書辞書はどこにはどこにはどこにはどこに保管保管保管保管されますかされますかされますかされますか????

� データと同じデータページの中に保管されます。

Page 103: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

103 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

参考参考参考参考::::圧縮圧縮圧縮圧縮 FAQ: よくあるよくあるよくあるよくある質問質問質問質問とそのとそのとそのとその回等集回等集回等集回等集

� Q006. 自動辞書作成自動辞書作成自動辞書作成自動辞書作成((((ADC)がががが作成作成作成作成されるされるされるされる閾値閾値閾値閾値(1~~~~2MB)はなぜこんなにはなぜこんなにはなぜこんなにはなぜこんなに小小小小さいのかさいのかさいのかさいのか????

� 辞書作成のインパクトを抑えるため、また未圧縮で残すデータを少なくするためです。その代わり、作成される辞書は100%最適とは限りません。

� Q007. 自動辞書作成自動辞書作成自動辞書作成自動辞書作成(ADC)ををををOFFにすることはできますかにすることはできますかにすることはできますかにすることはできますか????

� COMPRESS=YESだと自動的にADCは有効になります。ADCを無効にしたい場合は、COMPRESS=NOとした状態でデータを投入し、その後でオフラインREORGをして下さい。

� Q008.自動辞書作成自動辞書作成自動辞書作成自動辞書作成(ADC)によってによってによってによって辞書辞書辞書辞書がががが作成作成作成作成されたことはされたことはされたことはされたことはログログログログとしてとしてとしてとして書書書書かれますかかれますかかれますかかれますか????

� 管理通知ログ、db2daig.logに通知されます。

� Q0009. 辞書辞書辞書辞書をををを差分更新差分更新差分更新差分更新できるかできるかできるかできるか????

� いいえ、辞書の差分更新はできません。辞書作成後に、データが大量投入されて圧縮率が低下した場合は、辞書を再作成してください。

� Q0010. 別別別別のののの表表表表でででで作成作成作成作成したしたしたした辞書辞書辞書辞書をををを、、、、これからこれからこれからこれから圧縮圧縮圧縮圧縮するするするする他他他他のののの表表表表でででで使用使用使用使用することはできますかすることはできますかすることはできますかすることはできますか????

� いいえ、別の表で使用している辞書を他の表で使用することはできません。

Page 104: DB2 V9.7 圧縮機能利用ガイド - IBM...表表表表ののののCOMPRESS 属性ををををNO にににに設定設定するすするるする ALTER TABLE で定義する COMPRESS

104 © Copyright IBM Japan Systems Engineering Co., Ltd. 2009

ブランクブランクブランクブランク・・・・ページページページページですですですです。。。。