テーブル使用情報の取得 (V5R4 以降)

DB2/400 というデータベースは i5/OS というオブジェクト指向インターフェイスを持つ OS と統合されたデータベースになっています。

"オブジェクト指向"というのは、システム上の存在するものはすべて"型"を持つ"オブジェクト"であり、"テーブル"や"インデックス"もオブジェクトとして持っている属性や許される操作が決まっている、ということから言います。

"テーブル"の場合、まだ「テーブル」という言葉が決まる前からデータベースだった DB2/400 (というかその前身である S/38) ではその当時一般的だった VSAM ファイルを模して "ファイル" というオブジェクトになりますが、レコード件数やサイズ、最終使用日付や保管日付などは DSPFD (DiSPlay Dile Description) コマンドなどで見ることができるようになっています。

それはそれでよいのですが、SQL がデータベースへの一般的なインターフェイスとして定着して以来、いわゆるデータベース製品では SYSTABLES などのシステムテーブルに問い合わせて情報を得るのがよくあるやり方になっています。

DB2 ファミリーとの互換性 (というか相互運用性) を高めるためもあってか、先述したコマンドインターフェイスに加えてシステムテーブルへのインターフェイスが充実してきています。

いくつか有用なものを紹介してみましょう。適材適所で使い分けていけばいいと思います。


SYSTABLEINDEXSTAT

V6R1 からは SysTableIndexStat というシステムテーブルがあり、これに問い合わせると、テーブルにについているインデックスのリスト、そのタイプ、使用状況 などがわかるようになっています。

http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/index.jsp?topic=/db2/rbafzcatsystistat.htm

つまり、インデックスアドバイザーに従って、もしくは判断の結果インデックスを作成した後に、そのインデックスが実際どのくらい使われているかの評価を行うことができるわけます。
V5R4(後述しますが、V6R1の機能を PTFで V5R4上でも使用できるようにしてくれています)以前のリリースでは「テーブルについているインデックスのリストと評価 (V5R2/V5R3 以降)」や「テーブルのインデックス使用情報の取得 (RPG で API を使用して)」、「テーブルについているインデックスのリスト (V5R2 以降)」でやっていたことがシステムテーブルへの問い合わせで出来てしまうんですねぇ…素晴らしいです。
(たとえば↓のような SQL でそれがわかるわけですね)

SELECT 
  INDEX_NAME, 
  INDEX_TYPE, 
  SYSTEM_TABLE_SCHEMA,                 
  SYSTEM_TABLE_NAME, 
  LAST_QUERY_USE, 
  LAST_STATISTICS_USE,             
  QUERY_USE_COUNT, 
  QUERY_STATISTICS_COUNT, 
  LAST_USED_TIMESTAMP,       
  DAYS_USED_COUNT 

FROM SYSTABLEINDEXSTAT 

WHERE 
  SYSTEM_TABLE_SCHEMA = 'LIB1' 
     AND 
  SYSTEM_TABLE_NAME = 'FILE1' 

ORDER BY SYSTEM_TABLE_NAME;

リストとして表示されるインデックスのタイプとしては、'LOGICAL' とか 'PHYSICAL'、'PRIMARY KEY' などがありますが、そのとおり DDS で作成された LF や PF の K で指定されるキー、プライマリーキー定義などがリストされてきます。
↑の例では、純粋なインデックスのみを表示させるために INDEX_TYPE = 'INDEX' と指定していますが、LF などがどれだけ使われているか(データベースオプティマイザにはほとんど使用されない)を実際確認してみるために見てみるのもいいかもしれません。

SYSINDEXSTAT

V6R1 には SYSINDEXSTAT というシステムテーブルもあります。(これは V5R4 用の PTF にはなっていません) こちらはインデックスがわかっている場合にその情報を見る場合に利用できます。

http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/index.jsp?topic=/db2/rbafzcatsysindexstat.htm

SYSTABLESTAT

V6R1 から追加されたシステムテーブルには他にもいろんなものがありますが、たとえば SysTableStat というものがあります。

http://publib.boulder.ibm.com/infocenter/iseries/v6r1m0/index.jsp?topic=/db2/rbafzcatsyststat.htm

これはテーブルについての情報を提供するもので、現在の行数や実行されたオペレーションなどがわかるようになっています。

この SQL による問い合わせだけで、テーブルの存在チェック (たとえばスキーマを指定して count(*) をすれば、そのライブラリーの中のファイルの数のチェックができますね。ワークテーブル用のライブラリーの状況チェックなどに使えます) や、どのくらい読み出されているか/更新されているか/レコード追加されているがわかります。
DSPFD や DSPOBJD よりは手軽なやり方になりますね。システムへの負荷も軽くなります。

以下のテーブルはこれまでにプログラム/SQL によって 56回オープンされており、参照専用なのでデータの追加や更新はされていない、ということが確認できます。

入力専用のテーブルなので、データの追加は行われているが更新はされていないことが確認されます。

オープンとクローズの数が違いますね。このコマンドを実行した時点でこのテーブルをオープンしているジョブが 2ついました。リアルタイムでこういう情報がカンタンに確認できる、というのはかなりすごいことだと思います。

V5R4 への PTF

APAR でいうと↓になります。

SE26475 - OSP-DB QSYS2 NEW STATISTICS VIEWS END OF ABSTRACT

内容は↓のようにかんじです。

IBM-supplied database views are being added.  These views are  
used to return statistical information of existing database    
objects.  The column names and data in the views are a superset
of similar statistical views in DB2 for Linux, Unix, and        
Windows.                                                        
                                                               
Views:                                                          
QSYS2.SYSCOLUMNSTAT                                            
QSYS2.SYSPARTITIONINDEXSTAT                                    
QSYS2.SYSPARTITIONSTAT                                          
QSYS2.SYSTABLEINDEXSTAT                                        
QSYS2.SYSTABLESTAT                                              
                                                               
Functions:                                                      
QSYS2.COLUMN_STATISTICS                                        
QSYS2.INDEX_PARTITION_STATISTICS                                
QSYS2.PARTITION_STATISTICS                                      
                                                               
In addition to the new statistical objects, this PTF also:      
- redefines SYSIBM.SQLColPrivileges to be consistent with DB for
  LUW, by returning table privileges.                          
- Add QSYS2.SQLGetAuth Function.                                
- Fix a problem where QSYS2 views were incorrectly referring to
  Functions within SYSIBM.              
SYSCOLUMNSTAT contains one row for every column in a table      
partition or table member and one row for every combination of  
columns from a statistics collection. If the table is a        
distributed table, the partitions that reside on other database
nodes are not contained in this catalog view. They are contained
in the catalog views of the other database nodes.              

SYSPARTITIONINDEXSTAT contains one row for every index built    
over a table partition or table member. If the table is a      
distributed table, the indexes over partitions that reside on  
other database nodes are not contained in this catalog view.    
They are contained in the catalog views of the other database  
nodes.                                                          

SYSPARTITIONSTAT contains one row for every table partition or  
table member. If the table is a distributed table, the          
partitions that reside on other database nodes are not contained
in this catalog view. They are contained in the catalog views of
the other database nodes.                                      

SYSTABLEINDEXSTAT contains one row for every index that has at  
least one partition or member built over a table. If the index  
is over more than one partition or member, the statistics      
include all those partitions and members. If the table is a    
distributed table, the partitions that reside on other database
nodes are not included. They are contained in the catalog views
of the other database nodes.                                    

SYSTABLESTAT contains one row for every table that has at least
one partition or member. If the table has more than one        
partition or member, the statistics include all partitions and  
members. If the table is a distributed table, the partitions    
that reside on other database nodes are not included. They are  
contained in the catalog views of the other database nodes.

PTF でいうと↓が該当します。

SI24847 - OSP-DB QSYS2 New Statistics Views
SI24808 - OSP-DB QSYS2 New Statistics Views

[Top Pageに戻る]

Ads by TOK2