IBM Support

[Db2] 利用されていない表や索引の判別方法

Question & Answer


Question

データベースの中で利用されていない表や索引を調べる方法はありますか。

Answer

データベースの中で、実際に参照されている表や索引を判別するには以下の 2 つの方法があります。
 
  1. 表/索引統計による確認
    db2pd -tcbstats を利用すると、データベースが活動化されてから表や索引がスキャンされた回数を確認できます。
    注:データベースを活動化してから一度もアクセスされていないオブジェクトは表示されません。
    $ db2pd -db sample -tcbstats all
    Database Partition 0 -- Database SAMPLE -- Active -- Up 0 days 00:11:09
    ...
    
    TCB Table Stats:
    Address            TableName   Scans  UDI  RTSUDI  PgReorgs  NoChgUpdts Reads
    0x0700000042DF61B8 EMPLOYEE    21841  42   42      0         0          615357
    0x0700000042DF78B8 DEPARTMENT  39     14   14      0         0          52    
    0x0700000042E5C538 ORG         6      8    8       0         0          48    
    ...
    
    TCB Index Stats:
    Address            TableName   IID  EmpPgDel RootSplits BndrySplts PseuEmptPg Scans
    0x0700000042DF72C0 EMPLOYEE    2    0        0          0          0          0    
    0x0700000042DF72C0 EMPLOYEE    1    0        0          0          0          12  
    0x0700000042E5BF40 DEPARTMENT  3    0        0          0          0          0    
    0x0700000042E5BF40 DEPARTMENT  2    0        0          0          0          0    
    0x0700000042E5BF40 DEPARTMENT  1    0        0          0          0          22392
  2. 最終参照日による確認
    V9.7 FP1 以降、上記の表/索引統計に加えて、データベース・オブジェクトの最終参照日が 15 分毎に収集されています。
    各オブジェクトのカタログ・ビューの LASTUSED 列を参照することで、オブジェクトが最後に参照された日付を確認できます。
    $ db2 "SELECT TABSCHEMA,TABNAME,LASTUSED FROM SYSCAT.TABLES WHERE TABSCHEMA NOT LIKE 'SYS%'"
    
    TABSCHEMA  TABNAME              LASTUSED
    ---------- -------------------- ----------
    V97FP4     EMPLOYEE             2012-04-16
    V97FP4     EMP_PHOTO            2012-01-20
    V97FP4     ACT                  2012-01-30
    V97FP4     ORG                  2012-04-16
    V97FP4     STAFF                2012-01-20
    
    $ db2 "SELECT INDSCHEMA,INDNAME,LASTUSED FROM SYSCAT.INDEXES WHERE INDSCHEMA NOT LIKE 'SYS%'"
    
    INDSCHEMA  INDNAME              LASTUSED
    ---------- -------------------- ----------
    V97FP4     PK_DEPARTMENT        2012-04-16
    V97FP4     PK_EMPLOYEE          2012-04-16
    V97FP4     I_STAFF2_ID          2011-12-08
    たとえば、3 ヶ月以上参照されていない表は、以下の SQL で一覧できます。
    select tabschema, tabname, lastused from SYSCAT.TABLES where tabschema not like 'SYS%' and lastused < current_date-3 month
運用上の考慮点
最終参照日は、db2sysc プロセス内の EDU (エンジン・ディスパッチ可能単位) である db2lused (LASTUSED デーモン) により収集されます。
V9.7 FP2 以前では、DPF 環境の db2lused でメモリー・リークが発生する以下の障害が報告されていますので、DPF 環境でご利用いただく場合はご注意ください。
IC69430: MEMORY LEAK IN APPLICATION HEAP FOR THE DB2LUSED SYSTEM APPLICATION IN DPF SYSTEMS

関連情報
db2pd - 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":"a8m500000008PlTAAU","label":"Database Objects-\u003EIndexes"},{"code":"a8m500000008PlYAAU","label":"Database Objects-\u003ETables"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
25 August 2023

UID

swg21594729