【发布时间】:2011-01-20 14:33:00
【问题描述】:
在运行 websphere 7 和 DB2 的 Java 应用程序上进行分析,我们可以看到我们大部分时间都花在 com.ibm.ws.rsadapter.jdbc 包中处理与数据库的连接。
我们如何调整我们的 jdbc 性能?
当数据库性能成为瓶颈时,还有哪些其他策略?
谢谢
【问题讨论】:
在运行 websphere 7 和 DB2 的 Java 应用程序上进行分析,我们可以看到我们大部分时间都花在 com.ibm.ws.rsadapter.jdbc 包中处理与数据库的连接。
我们如何调整我们的 jdbc 性能?
当数据库性能成为瓶颈时,还有哪些其他策略?
谢谢
【问题讨论】:
【讨论】:
连接速度慢的一个原因是数据库停用,在第一个应用程序尝试连接之前,它不会打开其文件并分配其内存缓冲区和堆。在运行测试之前,请您的 DBA 确认数据库处于活动状态。 LIST ACTIVE DATABASES 命令(从本地 DB2 服务器或通过远程附件运行)应该在其输出中显示您的数据库。如果数据库未激活,请让您的 DBA 使用 ACTIVATE DATABASE yourDBname 显式激活它。这将确保即使最后一个用户断开与数据库的连接,数据库文件和内存结构仍然可用。
使用 GET MONITOR SWITCHES 确保为您的数据库启用了所有监视器开关,否则您将错过一些可能会泄露性能的细节。跟踪与这些监视器开关关联的数据的额外开销很小,而性能数据的价值却很大。
如果数据库始终处于活动状态并且事情看起来仍然很慢,那么有称为事件监视器的详细 DB2 跟踪将它们遇到的所有内容记录到文件、管道或 DB2 表中。语句事件监视器是我经常用来分析 SQL 语句效率和 UOW 卫生的一种。我也更喜欢将事件监视器记录记录到表而不是文件中,因此我可以使用 SQL 搜索数据以查找各种模式。 db2evtbl 实用程序使定义所需的事件监视器和创建表来存储其输出变得相当容易。 SET EVENT MONITOR STATE 命令是您启动和停止已创建事件监视器的方式。
【讨论】:
根据我的经验,您看到的情况很常见。要问的问题是 DB2 连接到底在做什么......
要做的第一件事是尝试将性能问题隔离到网站的某个部分 - 即是否存在应用程序的某个部分性能不佳,当您发现可以增加跟踪日志以查看是否您可以看到导致问题的查询。
此外,如果您与 DBA 交谈,他们可能能够对数据库进行一些分析,以告诉您哪些查询需要花费时间返回值,这也可能有助于您进行故障排除。
祝你好运!
【讨论】:
【讨论】: