LoginSignup
1
0

More than 1 year has passed since last update.

IIAS(Db2)のテーブルサイズ/テーブルスペース/物理ストレージの違いについて

Last updated at Posted at 2023-05-18

はじめに

世間ではDb2がリリースされて30年経ちますが、まだまだ私自身の知識や理解が追いついていない所となります。。。
テーブルのレコードを削除したのに何故、物理ストレージやテーブルスペースが減らないんだろう?という事があったため物理ストレージ、テーブルスペース、テーブルサイズについて記事にしたいと思います。

概要について

それぞれの領域の簡単な概要については以下の通りとなります。

物理ストレージ:DBの様々なデータ(テーブルスペース)群が格納される一番大枠となる領域。
テーブルスペース(表領域):DBのシステムやデータをまとめて保管する領域。
テーブル:データ(レコード)を格納する領域。

イメージ図

物理ストレージ、テーブルスペース、テーブルのイメージとしては以下のようになります。

image.png

データを削除した際の挙動について

テーブルのレコードを削除した際の各領域の変化についてまとめていきます。
以下のイメージではテーブルCとテーブルFのレコードをdeleteコマンドにより削除したイメージとなります。

deleteコマンドによりレコードを削除した場合は論理削除となり、物理的にはレコードまだ残っている状態となります。
(つまりテーブルとしては削除前のレコードも持った状態となります。)

そのため、delete後にselect countコマンドによるレコード件数結果が減ったように見えてもテーブルサイズは変わらないのは、論理削除レコードが残っているからとなります。

論理削除レコード削除してテーブルサイズを小さくするためにはreorgコマンドによるテーブルの再編成をすることで論理削除レコードを解放し、テーブルサイズを縮小することができます。

image.png

reorgによりテーブルサイズが小さくなったので、テーブルスペースや物理ストレージが合わせて小さくなるかというと、ならないようです。

以下のイメージ図のようにテーブルサイズが小さくなってもそのスペースはテーブルスペース内のフリースペースとして再利用されます。

image.png

テーブルスペース、物理ストレージも併せて縮小したい場合はalter tablespaceコマンドで縮小できます。

image.png

なので、テーブルのレコードをdeleteしただけではテーブルのサイズも変割らない為、
目的に応じてdeleteコマンドで削除した後は、reorgやalter tablespaceコマンドで使われなくなった領域を解放してあげる必要があります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0