通过setDB2Client*来方便的使用TRACE调优jdbc程序
一般来说通过TRACE的report来分析DDF的性能问题的话,基本对DBA都是噩梦一样。因为所有的Thread都是通过DDF一个类型的Thread,所以不管你怎么分类,看Accounting report都很难分析性能问题。
不过DB2从V9开始JDBC支持通过一系列的set函数设置client端信息,这样就可以将Client的不同SQLs设置为不同的名字来实现性能监控和分析。设置函数举例如下:
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也都按照我们的设置以更改:
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