データの配置

コンテナの特性

DB2が利用できるコンテナはディレクトリとファイル・ローデバイスである。前者を使用する表スペースがSMSであり、後者を利用するのがDMSである。表スペースのタイプを指定しなければ、デフォルトとしてSMSが使用される。表スペースの作成には、SYSADM・SYSCTRL・DBADMのいずれかの権限が必要である。

単一の表スペースに複数のコンテナを含めることができる。その場合、使用スペースは各コンテナからラウンドロビン方式で割り当てられ、IOの分散が図られる。逆に、表などのオブジェクトに対して、明示的にコンテナを関連付けることはできない。

単一のテーブルに複数の表スペースを割り当てることはできない。但し、DMSの場合には、索引とロングデータを別の表スペースに割り当てることができる。

物理アクセスの単位

DB2では、ディスクアクセスの単位として、以下のパラメータが使用される。

PAGESIZE
DB2がコンテナに対して物理アクセスを行うサイズ。Ver5.0では4KB固定だが、Ver5.2から8KB、Ver6から16KB・32KBがそれぞれ選択可能となった。
EXTENTSIZE
表スペースからオブジェクトに割り当てられるページの単位。デフォルトでは32ページが、データベース・パラメータDFT_EXTENT_SZに指定されている。
PREFETCHSIZE
I/O事前取り出しを行うサイズ。EXTENTSIZEの整数倍でなければならない。デフォルトは32ページが、データベース・パラメータDFT_PREFETCH_SZに指定されている。なお、I/O事前取り出しを行うプロセスの個数は、データベース構成パラメータNUM_IOSERVERSで指定する。 ___

いったん作成した表スペースについては、ALTER TABLESPACEでPAGESIZEやEXTENTSIZEを変更することはできない。但し、PREFETCHSIZEを変更することはできる。また、DMSについては、コンテナの追加を行うことができる。

なお、変わったところとして、アクセス計画を評価するときに使用するディスク性能を明示的に指定するパラメータとして、OVERHEAD(アクセス待ち時間)とTRANSFERRATE(ページ単位の読み込み時間)がある(指定はコンテナでなく表スペースに対して行う)。

バッファプール

個々の表スペースは、それぞれ特定のバッファプールに関連付けることができる。デフォルトではIBMDEFAULTBPというバッファプールのみが作成され、すべての表スペースはそれに関連付けられているが、CREATE BUFFERPOOL文で新規のバッファプールを作成し、ALTER TABLESPACE文で関連付けを変更することで、この機能を利用することができる。なお、バッファプールのサイズも、ページ数で指定する。

バッファプール中のダーティーページは、ダーティーページの比率がデータベース構成パラメータCHNGPGS_THRESHで指定した値を越えると、すべてがディスクに書き出される(そうでないと回復時のチェックポイントとならない)。なお、この処理を行うプロセスの個数は、データベース構成パラメータNUM_IOCLEANERSで指定する。(ちなみに、この処理は「非同期」クリーナーと呼ばれる)。

表スペースの管理

表スペースの管理を行うためのコマンドとして、以下のようなものがある。

LIST TABLESPACES (SHOW DETAIL)
データベースに含まれる表スペースの情報を表示する。表示される情報は次の通り。
LIST TABLESPACE CONTAINERS FOR tblspace-id (SHOW DETAIL)
表スペース番号(LIST TABLESPACESコマンドかSYSCAT.TABLESの照会で入手)を元に、表スペースを構成するコンテナの情報を表示する。表示される情報は次の通り。
ALTER TABLESPACE
表スペースの定義を変更する
DROP TABLESPACE
表スペースを削除する
トップページに
Last modified: Sun Mar 05 16:27:12 +0900 2023