データを圧縮するための固定長圧縮の使用

データ圧縮を使用して、表に必要なスペースを削減できます。 表スペース内のデータを圧縮するとデータの保管に必要なディスク・スペースの量が大幅に減る可能性があり、バッファー・プールのパフォーマンスの向上に役立つ可能性があります。

始める前に

TS_COMPRESSION_TYPEサブシステムパラメータは、サブシステムレベルで Db2 データを圧縮する際に使用されるデフォルトの圧縮アルゴリズムを指定します。

ALTER TABLESPACE、CREATE TABLE、CREATE TABLESPACE文のCOMPRESSオプションは、テーブルスペースまたはパーティションレベルで Db2 データを圧縮する際に使用される圧縮アルゴリズムを定義することができます。

DSN1COMP ユーティリティーを使用して、データをどの程度圧縮できるかを調べることができます。

固定長圧縮の場合は、圧縮と圧縮解除の両方のCPUコストが、圧縮率の小さい方に増加します。 したがって、圧縮率、つまり圧縮によるスペースの節約率が10~20パーセント未満の場合は、圧縮の使用を避けるのが最善です。 圧縮と圧縮解除に追加の CPU コストがかかってしまうため、圧縮によるメリットは得られません。

固定長圧縮を使用するには、以下のいずれかが真でなければなりません。
  • 表スペースは、COMPRESS YES節を使用して定義されており、TS_COMPRESSION_TYPEサブシステム・パラメーターは、FIXED_LENGTHに設定されています。
  • テーブルスペースは、COMPRESS YES FIXEDLENGTH句で定義されています。

作業ファイル・データベース内で定義されている表スペース (宣言済み一時表のための表スペース) の中のデータは、圧縮できません。

このタスクについて

データを圧縮すると、頻繁に発生するビット・ストリングが短いストリングで置き換えられます。 ビット・ストリングの置換ストリングへのマッピングについての情報は、コンプレッション・ディクショナリー に保管されます。 固定長圧縮は、Db2を使用して、保存する前にデータを圧縮し、バッファー・プール内のページから取得したデータを解凍します。 多くの場合、COMPRESS 文節を使用するとデータを保管するのに 必要なディスク・スペースの量がかなり低減されますが、圧縮率は データの特性によって異なります。

圧縮されたデータでは、SQL ワークロードと圧縮量によって、 以下のようなパフォーマンス上の効果が期待できます。
  • バッファー・プールのヒット率の向上
  • 入出力回数の減少
  • ページ取得操作の減少

プロシージャー

Db2が固定長圧縮を使用している時にデータを圧縮するには、

以下のいずれかのアクションを実行して、表スペースにデータを追加します。
  • REPLACE、RESUME NO、または RESUME YES SHRLEVEL CHANGE を指定して、KEEPDICTIONARY を指定せずに LOAD ユーティリティーを実行します。
  • KEEPDICTIONARY を指定せずに REORG ユーティリティーを実行します。
  • INSERT ステートメントを発行します。
  • MERGE ステートメントを発行します。
コンプレッション・ディクショナリーが既に存在しておらず、表スペース内のデータ量がDb2によって決定されたしきい値に達すると、コンプレッション・ディクショナリーが作成されます。 コンプレッション・ディクショナリーが作成されると、Db2はそれを使用して、表スペースに追加された後続のすべてのデータを圧縮します。