Question & Answer
Question
データベースや、各表スペースに含まれる表のサイズを一覧する方法はありますか?
Answer
表に所属するオブジェクトのサイズは ADMINTABINFO 管理ビューやADMIN_GET_TAB_INFO 表関数で一覧できます。ただし、以下の点に注意が必要です。
注: 各表の各オブジェクトがどの表スペースに格納されるかは、SYSCAT.TABLES や SYSCAT.DATAPARTITIONS カタログ・ビューで検索できます。
関連情報
ADMINTABINFO 管理ビューおよび ADMIN_GET_TAB_INFO 表関数 - 表のサイズおよび状態に関する情報の検索 SYSCAT.DATAPARTITIONS カタログ・ビュー
[Db2] パスポート・アドバンテージによく寄せられる質問
[Db2] 表スペース使用率の計測方法
- ひとつの表でも表データ(DAT)、索引(INX)、LOB/XML を異なる表スペースに配置できます。
- パーティション表はパーティション毎に異なる表スペースへ配置できます。さらに各パーティションの表データ、索引、LOB/XML を異なる表スペースに配置できます。
注: 各表の各オブジェクトがどの表スペースに格納されるかは、SYSCAT.TABLES や SYSCAT.DATAPARTITIONS カタログ・ビューで検索できます。
データベースに含まれる表ごとのサイズを大きい順に一覧するには、以下のような SQL が利用できます。
SELECT TABSCHEMA, TABNAME, SUM(DATA_OBJECT_P_SIZE) + SUM(COL_OBJECT_P_SIZE) + SUM(INDEX_OBJECT_P_SIZE) + SUM(LONG_OBJECT_P_SIZE) + SUM(LOB_OBJECT_P_SIZE) + SUM(XML_OBJECT_P_SIZE) FROM SYSIBMADM.ADMINTABINFO GROUP BY TABSCHEMA, TABNAME ORDER BY 3 DESC |
指定した表スペースで、多くのスペースを占めている表を一覧するには、以下のような SQL が利用できます。
以下の例では表スペース ID 0 (TBS=0: カタログ表スペース) の情報を一覧しています。
with TBSSIZE as (select d.TABNAME,d.TABSCHEMA,d.DATAPARTITIONID,d.TBSPACEID as tbs,DATA_OBJECT_P_SIZE + COL_OBJECT_P_SIZE as size from SYSCAT.DATAPARTITIONS d join SYSIBMADM.ADMINTABINFO t on d.TABNAME=t.TABNAME and d.TABSCHEMA=t.TABSCHEMA and d.DATAPARTITIONID=t.DATA_PARTITION_ID union select d.TABNAME,d.TABSCHEMA,d.DATAPARTITIONID,d.INDEX_TBSPACEID as tbs,INDEX_OBJECT_P_SIZE as size from SYSCAT.DATAPARTITIONS d join SYSIBMADM.ADMINTABINFO t on d.TABNAME=t.TABNAME and d.TABSCHEMA=t.TABSCHEMA and d.DATAPARTITIONID=t.DATA_PARTITION_ID union select d.TABNAME,d.TABSCHEMA,d.DATAPARTITIONID,d.LONG_TBSPACEID as tbs,LONG_OBJECT_P_SIZE + LOB_OBJECT_P_SIZE + XML_OBJECT_P_SIZE as size from SYSCAT.DATAPARTITIONS d join SYSIBMADM.ADMINTABINFO t on d.TABNAME=t.TABNAME and d.TABSCHEMA=t.TABSCHEMA and d.DATAPARTITIONID=t.DATA_PARTITION_ID ) select char(TABSCHEMA,20),char(TABNAME,50),TBS,SUM(size) from TBSSIZE group by TABSCHEMA,TABNAME,TBS having TBS=0 order by SUM(size) desc |
注:上記いずれの SQL も Db2 V10.1 以前の場合、COL_OBJECT_P_SIZE を除去する必要があります。
注:上記いずれの SQL も返すサイズはキロバイト (KB) 単位です。
関連情報
ADMINTABINFO 管理ビューおよび ADMIN_GET_TAB_INFO 表関数 - 表のサイズおよび状態に関する情報の検索 SYSCAT.DATAPARTITIONS カタログ・ビュー
[Db2] パスポート・アドバンテージによく寄せられる質問
[Db2] 表スペース使用率の計測方法
[Db2] How to list table size in a database. (English translation)
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlYAAU","label":"Database Objects-\u003ETables"}],"ARM Case Number":"","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"10.5.0;11.1.0;11.5.0","Line of Business":{"code":"LOB10","label":"Data and AI"}}]
Was this topic helpful?
Document Information
Modified date:
08 March 2024
UID
swg22009993