本文へジャンプ

DB2 Developer Domain > 製品別技術情報 > DB2秘剣シリーズ >

DB2秘剣シリーズ

 
レベル: 中級者者向け
2006年3月22日(水)
弐の刀 オートノミックの巻

昨今の厳しい冬の時期、みなさんいかがお過ごしでござるか? 春野さくらは、滝に打たれる荒行に取り組みますます剣の道に励んでおります! 春はいずこに、待ち遠しいこの頃です。

さて、今回は、前回に引き続きオートノミックの巻でござる。 DB2のオートノミック機能のひとつに、オートマティック・ストレージがありますが、皆さんは、DB2 V8.2.2 (V8 FP9)からDMS表スペースにAuto-Resizeというとても便利な機能が追加されたことを知っていますか?これはDMS表スペースでデータがいっぱいになり、もっとスペースが必要になると、自動的にスペースが追加されるとてもとても便利な機能のことです。そのための新しい構文は以下のとおりです。
執筆者
春野さくら
春野さくら

 
CREATE TABLESPACE <tsName> MANAGED BY DATABASE
  USING (<ListOfFileContainers>)
  [AUTORESIZE {NO|YES} [INCREASESIZE integer {PERCENT |K|M|G}]
  [MAXSIZE {NONE | integer {K|M|G}}

例えば
ケース1)
 
CREATE TABLESPACE TS1 MANAGED BY DATABASE
  USING (FILE ‘TS1’ 1000) AUTORESIZE YES
この場合、表スペース TS1が1000ページ(*4KB)コンテナ一つで作成されます。AUTORESIZEが指定されているので、デフォルトのINCREASEサイズ32MBとデフォルトのMAXSIZE(制限なし、実際はファイルシステム内でアロケーケションできるまで、または表スペースの最大サイズ64GBまで)が適用されます。

ケース2)
 
CREATE TABLESPACE TS2 MANAGED BY DATABASE
 USING (FILE ‘/dir/TS2/C0’ 100 M, FILE ‘/dir/TS2/C1’ 100 M)
 AUTORESIZE YES INCREASESIZE 50 M MAXSIZE 1 G
この場合、表スペースTS2が、各100MBの2つのコンテナで作成されます。表スペースを増やす必要が起こった場合、2つのコンテナが各25MBずつ増やされ、合計最大1GBまで拡張可能です。

ケース3)
 
CREATE TABLESPACE TS3 MANAGED BY DATABASE
  USING (FILE ‘D:\TS3’ 2000)

 
ALTER TABLESPACE TS3
  AUTORESIZE YES INCREASESIZE 50 PERCENT MAXSIZE NONE
この場合表スペースTS3は、2000ページ(*4KB)のコンテナ一つで作成され、AUTORESIZEは使用不可になっています。ただし、続くALTER コマンドにより、AUTORESIZEは使用可、MAXSIZEは制限なしに変更されています。INCREASESIZEは50%なので、必要に応じてスペースは4000KB(8000KBの50%), 次は6000KB(12000KBの50%), 9000KB(18000KBの50%)ずつ増えていきます。

ケース4)
 
CREATE TABLESPACE TS4 MANAGED BY DATABASE
 USING (FILE 'TS4' 200 M) AUTORESIZE YES
ALTER TABLESPACE TS4 AUTORESIZE NO
この場合、表スペースTS4はAUTORESIZE可で、INCREASESIZEとMAXSIZEはデフォルトが指定されています。ただし、続くALTERコマンドで AUTORESIZEが不可に変更されています。
通常ユーザーはALTERコマンドで表スペースにADD,BEGIN NEW STRIPE SET, EXTEND,RESIZEを指定してスペースを増やすことができます。しかし、AUTORESIZE YESでMAXSIZEが指定されていると、ユーザーはMAXSIZEを越えて、スペースを追加することができません。その場合は先にAUTORESIZEをNOに変更するか、MAXSIZEを増やす必要があります。また、コンテナ間でデータのリバランス処理が稼働している間は、AUTORESIZEは一時的にDISABLEになります。
おっと、もうひとつ忘れてはいけない重要な点があります。 実は、コンテナの最後のRANGEでファイルシステムがフルになった場合、スペースの自動拡張はおこりません。つまりAuto-Growthは、次の場合停止します。
  • MAXSIZEで指定した値に到達した時
  • DB2の表スペースサイズのリミットに到達した時(MAXSIZEがNONEの場合)
  • 最後のRANGEにあるコンテナのひとつが拡大することができない場合
全てのDMS表スペースはその論理および物理配置を記述するMAPを持っています。
例えば、次のような表スペースのマップは図1のようになります。
 
CREATE TABLESPACE TS4 MANAGED BY DATABASE
 USING (FILE 'TS4' 200 M) AUTORESIZE YES
ALTER TABLESPACE TS4 AUTORESIZE NO

Autonomic statistics collection evaluation cycle at a high level
図1
注: 各コンテナーは最初のエクステントにTAGを保管します。この例では各コンテナサイズが異なっていますが、一般的には、各コンテナは同じサイズを推奨します。
図2のような2つコンテナを持つ表スペースがあるとします。ここで点線はファイル・システムを表しています。この例ではコンテナーC0,C1で同じ率でスペースの拡張が行われています。しかし、C1を含むファイル・システムがフルになってしまったので、表スペースは自動的には拡張されません。

Autonomic statistics collection evaluation cycle at a low level
図2 
そこで再び、自動的にスペースが拡張されるためには、この例ではとるべき方法が3つあります。

Autonomic reorg evaluation cycle
図3 
ケース1: C1を含んでいるファイル・システムでDB2以外のファイルを削除して、スペースを作る。または、C1のファイルシステムのサイズを大きくする。
ケース2: C0にエクステントを追加して新しいRANGEを作る。AUTORESIZEはコンテナC0を拡張するようになる。
ケース3: NEW STRIP SETを追加し新しく2つのコンテナC2とC3を作成する。つまり新しいRANGEが作成されます。この後この新しいコンテナでスペースの自動拡張が起こります。

さあみなさん、少しややこしいですが、大丈夫ですか?それでは次回は引き続き、参の刀?オートノミック・ストレージを研究するでござる。さらばじゃ。

上に戻る




上に戻る
 
レベルマークについて

このページで紹介されている情報はレベル別にカテゴライズされています。

上級者向け
中級者向け
初級者向け
入門者向け

製品紹介
DB2 UDB V8