IBM Support

[Db2] 表スペース使用率の計測方法 (IM-11-00B)

Question & Answer


Question

各表スペースの使用率を確認しています。RUNSTATS コマンドによって取得された統計情報から算出した値と、LIST TABLESPACE で得られる値が大きく異なっていることがあります。なぜでしょうか。 また、正しい使用率を得るためにはどうしたらいいでしょうか。

Answer

表や索引などのオブジェクトは、表スペース内にエクステントごとに割り振られます。
あるオブジェクトが実際には数ページしか使用していない場合であっても、最低でもエクステント・サイズ分のページが割り当てられます。
LIST TABLESPACE SHOW DETAIL で表示される「使用したページ」は、この割り当てられているエクステントの合計ページ数を意味します。
そのため、小さいオブジェクトが表スペース中に多数作成されている場合は、実際の使用ページ数と LIST TABLESPACE SHOW DETAIL で表示される「使用したページ」の間で大きな違いが見られます。

例えばエクステント・サイズが 32 ページの表スペースに 40 ページの索引を作成した場合、3 エクステント ( = 96 ページ) 分のページが割り当てられます。このスペースは、他のオブジェクトは使用できません。3 エクステントの内容は、索引オブジェクトの 2 エクステントと索引オブジェクトのエクステント・マップ・ページ (EMP) 用の 1 エクステントです。実際に使用されているページ数は INSPECT コマンドで確認できます。
注:表や索引、LOB オブジェクトのサイズを確認するために INSPECT コマンドを使用する運用に妥当性はありません。サイズの確認が目的の場合は ADMINTABINFO 管理ビューなどを使用します。この文書ではオブジェクト配置などを説明する目的で INSPECT による使用ページの出力方法を提示しています。

[例]  注:INSPECT の出力ファイルは DIAGPATH に出力されます。
db2 INSPECT CHECK TABLESPACE NAME 表スペース名 RESULTS KEEP 出力ファイル名
db2inspf 出力ファイル名 フォーマット済みファイル名
各オブジェクトごとに "Used Pages" が出力されます。
[出力例]
Table phase start (ID Signed: 8, Unsigned: 8; Tablespace ID: 2) :

    Data phase start. Object: 8  Tablespace: 2
    The index type is 2 for this table.
     DAT Object Summary: Total Pages 1 - Used Pages 1 - Free Space 63 %
    Data phase end.

    Index phase start. Object: 8  Tablespace: 2
     INX Object Summary: Total Pages 3 - Used Pages 3
    Index phase end.

    LOB phase start. Object: 8  Tablespace: 2
     LOB Object Summary: Total Pages 128 - Used Pages 65
     LBA Object Summary: Total Pages 2 - Used Pages 2
    LOB phase end.
  Table phase end.
以下の照会で表 ID および表スペース ID から表名を割り出せます。
select tabschema, tabname from syscat.tables where tableid=<表 ID> and tbspaceid=<表スペース ID>
上記の INSPECT の出力例は、表 ID が 8、表スペース ID が 2 なので、次の照会が利用できます。
select tabschema, tabname from syscat.tables where tableid=8 and tbspaceid=2
エクステント単位の詳細な割り振り状況を確認するためには、db2dart /DHWM コマンドを実行します。
db2dart データベース名 /DHWM /TSI 表スペースID

※通常、db2dart を実行するには対象データベースがオフラインである必要がありますが、/DHWM オプションの場合はオンラインでも実行できます。
ただし、オフラインで取得した情報に比べて結果の信頼度は低くなることが考えられます。(稼働状況に依存します。)

[出力例]
Highwater mark processing - phase start.

NOTES:  All highwater mark values and/or object sizes listed below are
        given in extents and not pages (unless explicitly stated).

        The object ID and object type are shown for each extent listed.

        Extents marked with an asterisk (*) hold the first page of an
        object and these extents can only be moved by dropping and
        recreating that object.

        Extents marked as belonging to objects with ID equal to 65535
        are object table extents and they are not movable.

        After following a step and before continuing on to the next one,
        disconnect and reconnect to the database.

Highwater Mark:  1824 pages, 57 extents (extents #0 - 56)

 [0000] 65534 0x0e   [0001] 65534 0x0e   [0002] 65535 0x00   [0003]     4 0x40*
 [0004]     4 0x00*  [0005]     5 0x40*  [0006]     5 0x00*  [0007]     5 0x41*
 [0008]     5 0x01*  [0009]     6 0x40*  [0010]     6 0x00*  [0011]     6 0x41*
 [0012]     6 0x01*  [0013]     7 0x40*  [0014]     7 0x00*  [0015]     7 0x43*
 [0016]     7 0x03*  [0017]     7 0x44*  [0018]     7 0x04*  [0019]     7 0x41*
 [0020]     7 0x01*  [0021]     8 0x40*  [0022]     8 0x00*  [0023]     8 0x43*
 [0024]     8 0x03*  [0025]     8 0x44*  [0026]     8 0x04*  [0027]     8 0x41*
 [0028]     8 0x01*  [0029]     9 0x40*  [0030]     9 0x00*  [0031]     9 0x41*
 [0032]     9 0x01*  [0033]    10 0x40*  [0034]    10 0x00*  [0035]    10 0x41*
 [0036]    10 0x01*  [0037]    11 0x40*  [0038]    11 0x00*  [0039]    12 0x40*
 [0040]    12 0x00*  [0041]    12 0x41*  [0042]    12 0x01*  [0043]    13 0x40*
 [0044]    13 0x00*  [0045]    14 0x40*  [0046]    14 0x00*  [0047]    15 0x40*
 [0048]    15 0x00*  [0049]    16 0x40*  [0050]    16 0x00*  [0051]    17 0x40*
 [0052]    17 0x00*  [0053]     7 0x03   [0054]     7 0x03   [0055]    18 0x40*
 [0056]    18 0x00*

Dump highwater mark processing - phase start.

Number of free extents below highwater mark: 0
Number of used extents below highwater mark: 57

Object holding highwater mark:

 Object ID: 18
 Type:      Table Data Extent
      Note: Extent contains page #0 for object.

Dump highwater mark processing - phase end.

Highwater mark processing - phase end.

この表スペースの例では、57 エクステントが割り振り済みで、オブジェクト ID 8 の表には 8 エクステントが割り振られています。
オブジェクト ID につづく 16 進数 2 桁の値はオブジェクト・タイプを表し、0x00 はデータ・ページ・エクステント、0x01 は索引ページ・エクステントを意味します。
したがって、オブジェクト ID 8 の表にはデータ・ページと索引ページがそれぞれ 1 エクステントずつ割り振られていることがわかります。
この表スペースのエクステント・サイズは 32 ページなので、現時点でデータ保管のために割り振られているページは 32 ページです。
そのうち既に使用されているページ数 (INSPECT の結果から 1 ページとわかります) を引いた 31 ページが、新規割り振りなしにデータを保管できる空きページとなります。

同一オブジェクト (同じ表) であっても、データ・ページ、エクステント・マップ・ページ、索引ページ、LOB ページ、XML ページなどはそれぞれエクステント単位で割り振られるため、表の定義によっては見かけのデータ量に比べて占有するページ数がさらに大きくなることがあります。

運用上の考慮点
スペース管理上、各表の物理サイズ (割り当てられたエクステント数) や論理サイズ (使用したページ数) を SQL で把握したい場合、ADMINTABINFO 管理ビューおよび ADMIN_GET_TAB_INFO 表関数が利用できます。
ADMINTABINFO 管理ビューおよび ADMIN_GET_TAB_INFO 表関数 - 表のサイズおよび状態に関する情報の検索

具体的な SQL の例は以下の FAQ を参照してください。
[Db2] データベースに含まれる各表のサイズを一覧する方法


関連情報
INSPECT コマンド
db2dart コマンド
データベース管理表スペースの表スペース・マップ
How to identify used pages in a tablespace
[Db2] パスポート・アドバンテージによく寄せられる質問

お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlZAAU","label":"Database Objects-\u003ETablespaces"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Historical Number

2AAA1048357FF5254925780E00303F63

Document Information

Modified date:
15 August 2023

UID

jpn1J1004934