表レベルのコンプレッション・ディクショナリー作成
アダプティブ圧縮またはクラシック行圧縮を有効にした表の表レベルのコンプレッション・ディクショナリーは、自動または手動で作成できます。 アダプティブ圧縮を有効にした表には、常に自動で作成されるページ・レベルのデータ・ディクショナリーが含まれます。
ディクショナリー自動作成
- COMPRESS YES ADAPTIVE 節または COMPRESS YES STATIC 節を持つ CREATE TABLE ステートメントまたは ALTER TABLE ステートメントを使用して、表の COMPRESS 属性を設定している。
- 表の表レベルのコンプレッション・ディクショナリーがまだ存在していない。
- 表には、反復データのディクショナリーを構成するのに十分なデータが含まれます。

- 表が空のため、コンプレッション・ディクショナリーはまだ作成されません。
- 挿入またはロード操作を使用してデータが表に挿入されますが、非圧縮のままです。
- さらに多くのデータが表に挿入またはロードされますが、データは非圧縮のままです。
- しきい値に達すると、COMPRESS 属性が YES ADAPTIVE または YES STATIC に設定されている場合には、ディクショナリー作成が自動的に起動されます。
- ディクショナリーが作成されます。
- ディクショナリーが表に追加されます。
- この時点から表レベルの圧縮が使用可能になり、その後に挿入または追加される行は、表レベルのコンプレッション・ディクショナリーによって圧縮されます。
- 表の COMPRESS 属性を YES ADAPTIVE または YES STATIC に設定した。
- その XML ストレージ・オブジェクト内に、コンプレッション・ディクショナリーが存在していない。
- XML ストレージ・オブジェクト内に十分なデータが存在する。
一時表用に表レベルのコンプレッション・ディクショナリーを作成するメカニズムは、永続表用の作成メカニズムと似ています。 ただし、一時表に対してクラシック行圧縮を使用するかどうかは、照会の複雑度や結果セットのサイズといった要因に基づいて、データベース・マネージャーが自動的に決定します。
ディクショナリー手動作成
圧縮対応の表が十分なサイズになると、ディクショナリーは自動的に作成されますが、 RESETDICTIONARY パラメーターを指定した REORG TABLE コマンドを使用して、存在しない場合は表レベルのコンプレッション・ディクショナリーを強制的に作成することもできます。 このコマンドは、表に少なくとも 1 行のデータがあれば、 コンプレッション・ディクショナリーを強制的に作成します。 表の再編成はオフラインの操作です。 ディクショナリー自動作成を使用する利点の 1 つは、ディクショナリーの作成中に 表がオンラインのままであることです。
新規ディクショナリーを強制的に作成するには、 REORG TABLE コマンドを使用する代わりに、 INSPECT コマンドを使用する際に ROWCOMPESTIMATE パラメーターを指定することもできます。 このコマンドは、 表に既存のものがない場合、コンプレッション・ディクショナリーを作成します。 この方法を表の再編成を実行する手法と比較した場合の利点は、表がオンラインのままであることです。 後で追加される行は圧縮の対象となりますが、INSPECT コマンドを実行する前に存在していた行は、表の再編成が実行されるまで非圧縮のままです。 ただし、圧縮が有効になっている場合、自動ディクショナリー作成は通常、圧縮をアクティブにした直後に実行されます。これは、 INSPECT コマンドを使用する機会がある前に実行される可能性があります。
コンプレッション・ディクショナリーのリセット
表レベルのコンプレッション・ディクショナリーが自動または手動のどちらで作成されたかに関わらず、ディクショナリーは静的です。つまり、作成後は変更されません。 行を追加または更新すると、 それらの行は、コンプレッション・ディクショナリーにあるデータに基づいて圧縮されます。 多くの場合、この動作は妥当です。 例えば、市水道施設の顧客アカウントを維持するために使用されるデータベースの表について 考えてみます。 表には、STREET_ADDRESS、CITY、PROVINCE、 TELEPHONE_NUM、POSTAL_CODE、および ACCOUNT_TYPE といった列があると考えられます。 このような表のデータでコンプレッション・ディクショナリーを作成した場合には、たとえ中程度のサイズの表であっても、クラシック行圧縮でスペースを大幅に節約できる反復情報は、おそらく十分に存在します。 データの多くが、顧客間で共通している可能性があります。 例えば、CITY 列、POSTAL_CODE 列、または PROVINCE 列の値や、STREET_ADDRESS 列または TELEPHONE_NUM 列の値の一部などがこれにあたります。
- 月ベースでデータを集計するためにマスター表が使用されます。
- この表には、レコードの新しいセットが毎月ロードされます。