本文へジャンプ

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

DB2秘剣シリーズ

 
レベル: 中級者者向け
2006年4月7日(金)
参の刀 オートノミックの巻

ようやく暖かい季節になってきたでござるな、春爛漫の桜の木の下で、浮世のつらさを忘れて、しばし花見酒にひたっている輩もいるのではないかな? DB2の修行も忘れてはならぬぞ。

執筆者
春野さくら
春野さくら

さて、今回も弐の刀に引き続き、オートノミック・ストレージの話でござる。
DB2はV8.2.2(V8 FP9)から表スペースの“single point of storage management”機能を提供しています。これはデータベースや表スペースの作成時に、

  1. 明示的なコンテナの定義を必要としない
  2. コンテンナはストレージ・パスにまたがって自動的に作成される
  3. DB2によって既存のコンテナを拡大し、新しいコンテナを追加する

という機能から成り立っています。ただし、この機能は現時点ではDPFではサポートされていません。ここでいうストレージ・パスとはファイル・システムでのディレクトリーまたはWindowsでのDriveを意味します。これらは、年々複雑化する、表データ、索引、ロング・フィールド、LOB、ログなどの管理がデータベース管理者にとって、非常にワークロード上重くなり、これをどうにか簡単に、かつ自動化できないかという観点から提供された機能です。

図1:Non-Automatic Storage と Automatic Storage
図1

データベースの作成時に新しいパラメーターが追加されています。例えば
 
CREATE DATABASE TESTDB1 AUTOMATIC STORAGE YES
CREATE DATABASE TESTDB2 AUTOMATIC STORAGE YES ON /db2data
SYSCATSPACE、TEMPSPACE1、USERSPACE1はオートマティック表スペースとして作成されます。またはONオプションで複数のパスかDBPATH ON オプションを指定することにより暗黙的に作成されます。この場合はAUTOMATIC STORAGE のYESが指定されていなくても関係ありません。
 
CREATE DATABASE TESTDB3 ON C:,D:
ONオプションで指定されているのが、ストレージ・パスになります。もし、上記の例でON オプションが指定されていない場合、インスタンス構成パラメーターのdftdbpathがストレージ・パスになります。データベース・パス(データベース・ディレクトリーが作成されるところ、
例.<data basepath>/<instance>/NODE<num>/SQL<token>, SQLSPCS.1/2, SQLDBCON, SQLOGCTL.LFH, <dbdir>SQLOGDIRを含む)は次の順番で決定されます。
  1. DBPATH ON オプションで指定されたパス
  2. ON オプションの最初のパス
  3. インスタンス構成パラメーター dftdbpath

例えば、次のような場合
 
CREATE DATABASE TESTDB5 ON /db2/dir1, /db2/dir2, /db2/dir3
  • オートマティック・ストレージ:YES
  • データベース・パス:/db2/dir1
  • ストレージ・パス:/db2/dir1,/db2/dir2,/db2/dir3

 
CREATE DATABASE TESTDB6 ON D:\AS_PATH DBPATH ON C:
  • オートマティック・ストレージ:YES
  • データベース・パス:C:
  • ストレージ・パス: D:\AS_PATH

オートマティック・ストレージ表スペースは、データベースにAUTOMATICが設定されている場合のみ作成することができます。この新しい表スペースはSMSかDMSです。表スペースの作成時にコンテナは指定しません。DB2が決定します。この機能は前回のAUTO-RESIZE機能のスーパーセットになっており、AUTO-RESIZEを使用可能/不可能にすることができます(デフォルトは使用可能)。また新しいコンテナを自動的に追加する機能(新しいStripe Setにより)も提供します。

例えば、
 
CREATE TABLESPACE USER1
CREATE TEMPORARY TABLESPACE TEMPTS
CREATE  TABLESPACE MYTS INITIALSIZE 100 M MAXSIZE 1G
CREATE LARGE TABLESPACE LRGTS INITIALSIZE 512 M AUTORESIZE NO
CREATE REGULAR TABLESPACE USER2 INITIALSIZE 50 M

表スペースにタイプが何も指定されていない時には、デフォルトは REGULARになります。オートマティック・ストレージではRegular/Large表スペースはファイルコンテナを持ったDMSで作成されます。オートマティック・ストレージは表スペースが作成された時点ではコンテナが作成されません。DB2が自動的に作成します。またDB2は一つのストレージ・パスに一つ以下のコンテナをできるだけ同じサイズで作成しようとします。非常に小さいスペースしかないストレージ・パスを避けようとします。例えば5MB、500MB、600MBのフリースペースを持った3つのストレージ・パスがあって、800MBのinitial sizeが指定された場合、DB2は後ろの2つのストレージ・パスに、各400MBのコンテナを作成しようとします。最近追加されたストレージ・パスは、NEW STRIPEが必要となるまで使われません。この場合AUTO-RESIZEが必要になった場合、前回と違うシナリオが考えられます。

図2:Non-Automatic Storage と Automatic Storageのストレージ・パス
図2
前回説明したようにAUTO-RESIZEはコンテナの最後のRANGEが一杯になったときにファイルシステムを拡大するか、新しい STRIPを追加する必要があります。今回はDB2はこの場合、コンテナのリストをチェックし、全部のストレージ・パスを考慮し使おうとします。図2ではコンテナC3が最近追加されたストレージ・パスに作成され、C2とC3に新しいSTRIPEが追加されています。

オートマティック・ストレージではテンポラリー表スペースはSMSで作成されます。AUTO-RESIZEオプションは何ら意味を持ちませんので、指定することはできません。SMS表スペースでは最小のコンテナが制限ファクターになるので注意が必要です。例えば、10MBと100MBのスペースをもつコンテナがあった場合、表スペースは20MB(各10MB)を使った時点でフルになってしまいます。

図3:データベース・パス
図3 

上記の場合、データベース・パスとしてP1、P2、P3、P4と4つあった場合、DB2はテンポラリー・オートマティック表スペースとして、P3、P4のコンテナを使おうとします。
まっことDB2は賢いでござるな。さて、読者の方々、今回はどうであったかな? またまた混乱したでござるか? 次回までじっくりと考えてくだされ。それではさらばじゃ。


上に戻る




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

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

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

製品紹介
DB2 UDB V8