IBM Support

内部注册变量APM_THROTTLE=60的用法

Question & Answer


Question

请简单介绍内部注册变量APM_THROTTLE=60的用法?

Answer

当语句集中器(即statement concentrator: DB CFG stmt_conc=LITERALS)打开时,比如说编译下面的语句:
SELECT FIRSTNME, LASTNAME FROM EMPLOYEE WHERE EMPNO='000020'

编译的时候上面的语句其实会被转化为为语句:
SELECT FIRSTNME, LASTNAME FROM EMPLOYEE WHERE EMPNO=:L0

在编译结束前,最初的语句(即转化前的语句)会被从package cache里面清除掉。 在绝大多数时候这种设计是最优的,但是在某些场景下,这个行为(即把转化前语句从package cache里面清除的行为)也可能会带来一些负面影响。 比如我们有应用重复提交下面的语句到服务器执行:
SELECT FIRSTNME, LASTNAME FROM EMPLOYEE WHERE EMPNO='000020'

这种情况下,如果不清理转化前语句是会带来收益的。

还有一些时候,频繁清理转化的语句会导致SQLO_LT_sqlra_anchor_stmt__latch的竞争。 比如说从db2pd -latch看到下面的现象:


且从stack数据看到上面latch的直接或者间接竞争者,有较大部分正在调用sqlra_cache_del_empty_stmt():
sqlra_hash_del_stmt__FP13SQLO_MEM_POOLP17sqlra_anchor_stmtP17sqlra_cached_stmtPi + 0x39C
sqlra_cache_del_empty_stmt__FP8sqlrr_cbP17sqlra_anchor_stmtP17sqlra_cached_stmtPi + 0x88
0sqlra_csm_dec_and_clean_statement__FP8sqlrr_cbP17sqlra_cached_stmt + 0x2C8
sqlra_sqlC_free_section__FP8sqlrr_cbP25sqlra_sql_context_siblingi@OL@21253 + 0x54
sqlra_sqlC_free_section__FP8sqlrr_cbP25sqlra_sql_context_siblingi + 0x254
sqlra_sqlC_get_stmt__FP8sqlrr_cbPUcUiUciP17sqlra_cached_stmtPi + 0x6C8
sqlra_get_section__FP8sqlrr_cbPUcsT2T3T2UsUlP16db2UCprepareInfoP15db2UCCursorInfoiUi + 0x1FC
sqlrr_sql_request_pre__FP14db2UCinterfaceUiiP16db2UCprepareInfoP15db2UCCursorInfo + 0x2E4
sqlrr_prepare__FP14db2UCinterfaceP16db2UCprepareInfo + 0xB38

如果出现上面这种情况,而你又没有别的更好方法解决问题的时候,或许可以尝试这个内部变量:
db2set APM_THROTTLE=60 (需要重起实例生效)

上面设置生效后,上面所说的转换前语句不会从package cache被清除, 一定程度上可以减少sqlra_cache_del_empty_stmt()的调用频率,缓解SQLO_LT_sqlra_anchor_stmt__latch的竞争。

但是这也会带来负面作用,就是package cache里面充斥了大量转换前语句, 随着这些语句在package cache里面滋生,性能有可能在一段时间后再次恶化,所以, 建议在"APM_THROTTLE=60"打开的情况下,定期执行下面命令清理package cache:
db2 "FLUSH PACKAGE CACHE DYNAMIC"

[{"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Component":"Performance - Lock-Latch","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF016","label":"Linux"},{"code":"PF033","label":"Windows"}],"Version":"10.5;11.1","Edition":"","Line of Business":{"code":"LOB10","label":"Data and AI"}}]

Document Information

Modified date:
16 June 2018

UID

swg22016560