DB2查看索引的使用情况
db2pd可以查看应用对数据库中的表和索引的访问情况
db2pd -db dbname -tcbstats all -file db2pd_tab_all.txt
有时候,你只想查看对某一个表和其上的索引的访问情况
db2pd -db dbname -tcbstats all tbspaceid=id1 tableid=id2
这里的id1,id2可以通过查询得到
db2 "SELECT TBSPACEID, TABLEID FROM SYSCAT.TABLES WHERE TABSCHEMA = 'SCHEMANAME' AND TABNAME = 'TABLENAME'"
在db2pd的输出 "TCB Index Stats:"部分,能看到索引的IID,和索引访问情况的信息 Scans,IxOnlyScns
自数据库启动以来,对某个索引的总访问次数就是: Scans + IxOnlyScns
如果想看索引名,可以通过下面的查询得到
db2 "SELECT INDSCHEMA, INDNAME FROM SYSCAT.INDEXES WHERE TABSCHEMA = 'SCHEMANAME' AND TABNAME = 'TABLENAME' AND IID = 3"
自DB2 9.7以后,可以用表函数轻松获得这些信息
SELECT
SUBSTR(SI.INDSCHEMA, 1, 30) AS INDSCHEMA,
SUBSTR(SI.INDNAME, 1, 30) AS INDNAME,
MGI.INDEX_SCANS,
MGI.INDEX_ONLY_SCANS
FROM
TABLE(MON_GET_INDEX('EPRICER', 'CTMTTRN', -2)) as MGI,
SYSCAT.INDEXES AS SI
WHERE
MGI.TABSCHEMA = SI.TABSCHEMA
AND MGI.TABNAME = SI.TABNAME
AND MGI.IID = SI.IID
ORDER BY
MGI.INDEX_SCANS DESC;