什么存储在JNDI缓存中?

时间:2009-07-22 13:38:35

标签: java db2 websphere jndi

我们在Windows上使用WebSphere 6.1连接到不同Windows机器上的DB2数据库。我们在申请中使用预备陈述。在调整数据库索引(将列添加到索引末尾)时,我们看不到在具有相同查询的测试数据库上看到的性能提升,在更改索引之后,数据库服务器上的处理器实际上被挂起。

预准备语句查询计划是否实际存储在JNDI中?如果是这样,他们怎么能被清除?如果没有,我们如何清除DB2服务器上的缓存?

2 个答案:

答案 0 :(得分:2)

预准备语句的执行计划存储在DB2包缓存中。在添加索引之后,包缓存仍然可以保留现在是次优的旧访问计划。

添加索引后,您将希望至少在该索引上发出RUNSTATS语句,以便为DB2优化器提供选择合理访问计划所需的信息。

一旦新索引存在RUNSTATS统计信息,请发出FLUSH PACKAGE CACHE语句以释放涉及受影响表的任何访问计划。这样做的缺点是,其他动态SQL语句的访问计划也将被弹出,导致优化器使用率暂时上升,因为每个不同的SQL语句都经过优化和缓存。

http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/topic/com.ibm.db2.luw.sql.ref.doc/doc/r0007117.html

答案 1 :(得分:0)

RDBMS本身在数据库中“正常”查询计划,确切的生命周期是供应商特定的。它们肯定不在JNDI注册表中。

  1. 我假设两个数据库中的数据量相似?

  2. 如果是这样,您查看了两个数据库的解释计划并确认它们匹配?

  3. 如果这两个问题的答案都是肯定的,我就没有想法了,是时候重启数据库服务器了。