一般来说通过TRACE的report来分析DDF的性能问题的话,基本对DBA都是噩梦一样。因为所有的Thread都是通过DDF一个类型的Thread,所以不管你怎么分类,看Accounting report都很难分析性能问题。
不过DB2从V9开始JDBC支持通过一系列的set函数设置client端信息,这样就可以将Client的不同SQLs设置为不同的名字来实现性能监控和分析。设置函数举例如下:
1
2
3
4
5
|
db2conn.setDB2ClientAccountingInformation(qname+ "accin" );
db2conn.setDB2ClientUser(qname+ "user" );
db2conn.setDB2ClientWorkstation(qname+ "wsta" );
db2conn.setDB2ClientApplicationInformation(qname+ "appin" );
db2conn.setDB2ClientProgramId(qname+ "cliid" );
|
这时候看DB2的accouting trace可看到
PRIMAUTH: USRT001 PLANNAME: q01appin ,这里的planname就是applicationInformation的信息,所以可以用这个方法来归类不同的SQLs,然后按照PLANAME来分析DDF thread的相关内容。
如果看RETRACE的话,可以看到END_USER和WS_NAME也都按照我们的设置以更改:
1
2
3
4
5
6
7
|
RIMAUTH CONNECT INSTANCE END_USER WS_NAME RIGAUTH CORRNAME CONNTYPE RECORD TIME DESTNO ACE IFC DESCRIPTION LANNAME CORRNMBR TCB CPU TIME ID ------- -------- ----------- ----------------- ------ --- --- -------------- SRT001 SERVER CCE6B1A72042 q01user q01wsta SRT001 db2jcc_a DRDA 06:12:02.19937131 962 1 63 SQL STATEMENT ISTSERV ppli N/P |
1
|
|
1
|
|
1
|
|