再利用可能ストレージ
「再利用可能ストレージ (Reclaimable storage)」 は、 Db2® 9.7 以降の非一時自動ストレージおよび DMS 表スペースのフィーチャーです。 これを使用して、最高水準点 より下にある使用中のエクステントを統合し、表スペースの未使用エクステントを、再利用するためにシステムに戻します。
Db2 9.7より前に作成された表スペースの場合、システムにストレージを解放する唯一の方法は、コンテナーをドロップするか、または最高水準点 より上 の未使用エクステントを除去してコンテナーのサイズを削減することでした。 最高水準点を下げるための直接的な仕組みがありませんでした。 データをアンロードしてから空の表スペースに再ロードするか、または、 表および索引の再編成を実行するなどの間接操作によって下げることが可能でした。 この後者の方法では、最高水準点より下にフリーのエクステントが存在していたとしても、 依然として最高水準点が下がらない場合があります。
Db2 バージョン 9.7 以降で作成されているすべての非一時自動ストレージ表スペースおよび DMS 表スペースは、最高水準点より下にあるエクステントを統合するこの機能を備えています。 以前のバージョンで作成された表スペースの場合、まず、 Db2 9.7を使用して作成された新しい表スペースで表スペースを置き換える必要があります。 データはアンロードして再ロードするか、SYSPROC.ADMIN_MOVE_TABLE プロシージャーを使用して、オンライン表の移動操作で移動できます。 ただし、このようなマイグレーションは必須ではありません。 再利用可能ストレージを使用可能な表スペースは、再利用可能ストレージのない表スペースと同じデータベースに共存できます。
エクステントの移動による表スペース・サイズの削減は、オンライン操作です。 つまり、データ操作言語 (DML) および データ定義言語 (DDL) は、削減操作が行われている間も続行できます。 バックアップやリストアなどの操作は、エクステントの移動操作とは同時に実行できません。 このような場合、移動中のエクステントにアクセスする必要があるプロセス (バックアップなど) は、 特定の数 (この数は非ユーザー構成可能) のエクステントが移動するまで待機する必要があります。その時点で、バックアップ・プロセスはアクセスするエクステントのロックを取得し、処理を続行します。
エクステント移動の進行状況は、MON_GET_EXTENT_MOVEMENT_STATUS 表関数を使用してモニターできます。
自動ストレージ表スペース
- コンテナー縮小のみ
- このオプションでは、エクステントは移動されません。 データベース・マネージャーは、削除ペンディング中のエクステントを最初に解放することによって、コンテナーのサイズを削減しようとします。 (リカバリー性の確保のために、
削除ペンディング中
のエクステントの一部を解放できないことがあるので、そうしたエクステントの一部が残る可能性もあります。) 最高水準点が解放されるエクステントの中にある場合、最高水準点は引き下げられます。それ以外の場合、最高水準点に変更は加えられません。 次に、コンテナーは、表スペースの総量が最高水準点と同じかそれよりもやや大きくなるように、サイズ変更されます。 この操作は、ALTER TABLESPACE および REDUCE 節を使用して自動的に実行されます。 - 最高水準点の引き下げのみ
- このオプションでは、最大数のエクステントを移動して最高水準点を引き下げますが、コンテナーのサイズ変更操作は実行されません。 この操作は、ALTER TABLESPACE ステートメントの LOWER HIGH WATER MARK 節を単独で使用して実行されます。
- 最高水準点の引き下げと一定量のコンテナーの削減
- このオプションでは、表スペースの削減量を絶対量 (KB、MB、または GB) で指定できます。 または、パーセントを入力して削減する相対量を指定できます。 いずれの場合も、データベース・マネージャーはまずエクステントを移動せずに、 要求された量のスペースの削減を試みます。 つまり、 コンテナー縮小のみで説明されているように、削除保留エクステントを解放し、最高水準点の引き下げを試みることによって、コンテナー・サイズのみを削減することによって表スペースを削減しようとします。 この方法で、十分な削減が得られない場合、データベース・マネージャーは表スペースの下部にある使用済みエクステントを移動して、最高水準点の引き下げを開始します。 エクステントの移動が完了すると、コンテナーは、表スペースの総量が最高水準点と同じかそれよりもやや大きくなるように、サイズ変更されます。 移動できるエクステントが足りないために、要求された量だけ表スペースを削減できない場合、最高水準点が可能な限り低くされます。 この操作は、ALTER TABLESPACE ステートメントの REDUCE 節を使用して実行されます。REDUCE 節には、表スペースのサイズの削減指定量が含まれます。
- 最高水準点の引き下げと可能な最大量のコンテナーの削減
- この場合、データベース・マネージャーは表スペースとそのコンテナーのサイズを削減するために、可能な限り多くのエクステントを移動します。 この操作は、ALTER TABLESPACE ステートメントの REDUCE MAX 節を使用して実行されます。
エクステントの移動処理開始後は、ALTER TABLESPACE ステートメントの REDUCE STOP 節を使用して処理を停止できます。 移動されたエクステントはすべてコミットされ、可能な限り最高水準点が低くされて、新しい (より低い) 最高水準点までコンテナーがサイズ変更されます。
DMS 表スペース
DMS 表スペースは次の 2 つの方法で削減できます。
- コンテナー縮小のみ
- このオプションでは、エクステントは移動されません。 データベース・マネージャーは、まず削除がペンディング中のエクステントを解放して、コンテナーのサイズの削減を試みます (リカバリー性の確保のために、
削除ペンディング中
のエクステントの一部を削除できないことがあるので、そうしたエクステントの一部が残る可能性もあります。) 最高水準点が解放されるエクステントの中にある場合、最高水準点は引き下げられます。 それ以外の場合、最高水準点に変更は加えられません。 次に、コンテナーは、表スペースの総量が最高水準点と同じかそれよりもやや大きくなるように、サイズ変更されます。 この操作は、ALTER TABLESPACE ステートメントの REDUCE database-container 節を単独で使用して実行されます。 - 最高水準点の引き下げのみ
- このオプションでは、最大数のエクステントを移動して最高水準点を引き下げますが、コンテナーのサイズ変更操作は実行されません。 この操作は、ALTER TABLESPACE ステートメントの LOWER HIGH WATER MARK 節を単独で使用して実行されます。
- まず、ALTER TABLESPACE ステートメントの LOWER HIGH WATER MARK 節を使用して、表スペースの最高水準点を下げる必要があります。
- 次に、ALTER TABLESPACE ステートメントの REDUCE database-container 節を単独で使用して、コンテナーのサイズ変更操作を実行します。
エクステントの移動処理開始後は、ALTER TABLESPACE ステートメントの LOWER HIGH WATER MARK STOP 節を使用して処理を停止できます。 移動されたエクステントはすべてコミットされ、最高水準点はその新しい値まで削減されます。
例
例 1: 自動ストレージ表スペースのサイズを最大量削減する。
DROP TABLE T1
DROP TABLE T3
この時点で、エクステントが空になっている場合、次のステートメントを実行すると、表 T1 と T3 で使用されていたエクステントが再利用されることになり、表スペースの最高水準点が削減されます。 ALTER TABLESPACE TS REDUCE MAX
例 2: 自動ストレージ表スペースのサイズを一定量削減する。
DROP TABLE T1
続いて、次のステートメントを使用して、表スペースのサイズを 1 MB 削減します。 ALTER TABLESPACE TS REDUCE SIZE 1M
または、次のようなステートメントを使用して、表スペースの既存サイズのパーセントで表スペースを削減することもできます。 ALTER TABLESPACE TS REDUCE SIZE 5 PERCENT
例 3: 最高水準点より下に空きスペースがある場合に自動ストレージ表スペースのサイズを削減する。
ALTER TABLESPACE TS REDUCE SIZE 32K
データベース・マネージャーは、エクステントを移動しなくても、最高水準点を下げてコンテナー・サイズを削減できます。 このシナリオを 図 2 に示します。
例 4: DMS 表スペースのサイズの削減
DROP TABLE T1
DROP TABLE T3
DMS 表スペースでの最高水準点の引き下げとコンテナー・サイズの削減は、2 つの操作で行います。 まず、次のステートメントを使用してエクステントを移動し、最高水準点を下げます。 ALTER TABLESPACE TS LOWER HIGH WATER MARK
次に、次のようなステートメントを使用してコンテナーのサイズを削減します。 ALTER TABLESPACE TS REDUCE (ALL CONTAINERS 5 M)