DB2が利用できるコンテナはディレクトリとファイル・ローデバイスである。前者を使用する表スペースがSMSであり、後者を利用するのがDMSである。表スペースのタイプを指定しなければ、デフォルトとしてSMSが使用される。表スペースの作成には、SYSADM・SYSCTRL・DBADMのいずれかの権限が必要である。
単一の表スペースに複数のコンテナを含めることができる。その場合、使用スペースは各コンテナからラウンドロビン方式で割り当てられ、IOの分散が図られる。逆に、表などのオブジェクトに対して、明示的にコンテナを関連付けることはできない。
単一のテーブルに複数の表スペースを割り当てることはできない。但し、DMSの場合には、索引とロングデータを別の表スペースに割り当てることができる。
DB2では、ディスクアクセスの単位として、以下のパラメータが使用される。
いったん作成した表スペースについては、ALTER TABLESPACEでPAGESIZEやEXTENTSIZEを変更することはできない。但し、PREFETCHSIZEを変更することはできる。また、DMSについては、コンテナの追加を行うことができる。
なお、変わったところとして、アクセス計画を評価するときに使用するディスク性能を明示的に指定するパラメータとして、OVERHEAD(アクセス待ち時間)とTRANSFERRATE(ページ単位の読み込み時間)がある(指定はコンテナでなく表スペースに対して行う)。
個々の表スペースは、それぞれ特定のバッファプールに関連付けることができる。デフォルトではIBMDEFAULTBPというバッファプールのみが作成され、すべての表スペースはそれに関連付けられているが、CREATE BUFFERPOOL文で新規のバッファプールを作成し、ALTER TABLESPACE文で関連付けを変更することで、この機能を利用することができる。なお、バッファプールのサイズも、ページ数で指定する。
バッファプール中のダーティーページは、ダーティーページの比率がデータベース構成パラメータCHNGPGS_THRESHで指定した値を越えると、すべてがディスクに書き出される(そうでないと回復時のチェックポイントとならない)。なお、この処理を行うプロセスの個数は、データベース構成パラメータNUM_IOCLEANERSで指定する。(ちなみに、この処理は「非同期」クリーナーと呼ばれる)。
表スペースの管理を行うためのコマンドとして、以下のようなものがある。