表を格納するページサイズを決定する
z データの行長・カラム数の制限
z 表容量の制限
¾ LARGE RID(V9)が使用可能な表スペース(LARGE DMS表スペース、一時表スペース)の場合、
制限値が異なる。(下表参照。)
z 格納効率も考慮する必要がある
¾ LARGE RIDを使用しない表スペースでは、ページ・サイズにかかわらず1ページに格納できる
行数は最大255行まで。
¾ LARGE RIDを使用する表スペースでは、1ページに255行以上格納可能。(下表参照。)
z アプリケーションの特性(OLTP or DSS)や管理面も考慮する
ページ・サイズによる制限値
表の分割、パーティション表(V9)も検討する
z UNION ALL VIEWに対する参照(V6,V7でも可)
z UNION ALL VIEWに対する更新、INSERTも可(V8)
z パーティション表(V9)
ページ・
サイズ
行長
(bytes)
列数 非LARGE表スペース LARGE表スペース 表容量 行数/ページ 表容量 行数/ページ
4KB 4005 500 64GB 255 2TB 287
8KB 8101 1012 128GB 255 4TB 580
16KB 16293 1012 256GB 255 8TB 1165
32KB 32677 1012 512GB 255 16TB 2335
解説
ページ・サイズ
z
表に必要となるディスク容量を計算する時に、どのページサイズを使用するかが非常に重要な要素になります。z DB2では、4K/8K/16K/32Kバイトの4種類のページサイズをサポートします。
z 1行のレコードが複数のページにまたがることはできません。1レコードの長さがページ内に収まらない場合は、ペー
ジサイズを大きくして下さい。
z
表の最大容量の制限¾
V8までは、表の最大容量は64/128/256/512GB(それぞれのページサイズは4/8/16/32KB)でしたが、V9以降では、
LARGE RIDを使用することにより、最大容量が2/4/8/16TB (ページサイズは4/8/16/32KB)に拡張されました。
z
格納効率¾
LARGE RIDを使用しない表スペースの場合、1ページに格納できるのは最大255行までという制限があります。
¾ 1行のサイズが100バイトの表があった場合、32KBページでは最大約
(32000 ÷ 100) 320行を1ページに格納できるは
ずですが、この制限によって(320 - 250)約70行分のデータ領域にはデータが格納されず使われない無駄な領域にな ります。¾ 例えば、レコードサイズがLOB(Large Object:BLOB,CLOB,DBCLOB,LONG VARCHAR)を含まない5000バイトの表が あった場合、4KBページでは表を作成することができません。5000バイトの長さを持つ表を作成するためには、少なくと も8Kバイトのページサイズを使用する必要があります。しかしこの場合、8Kバイトページのうち5000バイトにしかデータ が書かれない為、残りの3000バイトは使用されない無駄な領域になります。このようなケースの場合、16KBページとい う選択肢もあります。16KBページには、5000バイト長のレコードは3レコード入ります。残りは1000バイトとなり、使用さ れないスペースを抑えることができます。
¾
LARGE RIDを使用する表スペースでは、
この行数の上限値が大きくなりますので、レコードが格納されない無駄な領域を減らすことができます。(1ページ当たりに格納できる行数の上限値は、ページサイズ毎に異なります。)
z
行のランダム読み取り および 書き込みを実行するOLTPアプリケーションは、不必要な行に使用するバッファー ページを少なくするために小さいページサイズを使用するようにしてください。z
一度に多くの連続した行にアクセスするDSSアプリケーションは、指定された数の行を読み取るのに必要な入出力 要求の数を減らすように大きなページサイズを使用するようにしてください。 異なるページ・サイズによる考慮点
z
バッファプール、一時表スペースはページサイズ毎に必要z USEオプションを使用した再編成では、一時表スペースは表スペースと同じページサイズである必要がある
参考:デフォルト・ページ・サイズの変更(V8.2.2以降)
V8.2.2以降では、データベース作成時に4KB以外(8,16,32KB)のデフォルト・
ページ・サイズを指定可能。
z 指定方法
¾ CREATE DATABASEコマンドのPAGESIZEオプション
– 4096, 8192, 16384, 32768または、4 K, 8 K, 16 K, 32 Kを指定可能
¾ sqlecrea()APIの引数pDbDescriptorExt
z 初期表スペースSYSCATSPACE, TEMPSPACE1, USERSPACE1、デフォルト・バッファー プールIBMDEFAULTBPは、データベース作成時に指定されたページ・サイズで作成され る。
z 明示的にページ・サイズを指定して表スペース、バッファープールを作成することも可能。
考慮点
z 不必要に大きいページ・サイズを使用すると、領域が無駄になることがある。
¾ バッファープールに読まれるときの領域の無駄
–
特に、データにランダムにアクセスするOLTPアプリケーションの場合¾ 1ページあたりの行数の制限
–
ページ・サイズに関わらず255行までz データベース作成時に指定したデフォルト・ページ・サイズは後から変更できない。
参考:UNION ALL VIEWによる表分割
UNION ALLビューとは
z 複数の結果表を組み合わせて新たな結果表として定義されたView z UNION ALLを指定すると結果は該当表のすべての行から構成される
表分割の目的
z 表スペースサイズの制限による分割
z 履歴データ等のレンジ・パーティションを実現
z データ削除を分割された表単位のIMPORT REPLACEなどで実行できる
z REORGなどの運用を表毎に個別に行える
VIEW定義の方法
z CREATE VIEW文中のSELECT文で、WHERE文節によって値を制限
¾ このVIEWに対するINSERTは不可
z 表に対するCONSTRAINTによって値を制限
¾ INSERTを使うためにはCONSTRAINTが必要(V8以降)
解説
ORDER MONT H
ITEM 2003-01-01 1 xxxx 2003-02-01 2 xxxx 2003-03-01 3 xxxx
ORDER MONTH ITEM 2003-01-01 1 xxxx 2003-02-01 2 xxxx 2003-03-01 3 xxxx 2003-04-01 4 xxxx 2003-05-01 5 xxxx 2003-06-01 6 xxxx 2003-07-01 7 xxxx 2003-08-01 8 xxxx 2003-09-01 9 xxxx
ビュー VIEW_YEAR
CREATE VIEW VIEW_YEAR(order,
ドキュメント内
データベース物理設計【DB2 9.5 対応版】
(ページ 31-36)