在一行表中选择需要几秒钟

时间:2014-05-21 17:04:30

标签: performance oracle hibernate

我在我的Web应用程序中遇到的性能非常低,其中微不足道的HTTP请求需要花费几十秒的时间来处理。跟踪应用程序代码我发现大部分时间都花在执行第一个数据库查询上,即使它只是单行 - 单列表上的SELECT。每个HTTP请求都会发生这种情况,与执行的查询无关。在第一次病态数据库交互之后,剩下的查询顺利进行。

我在Oracle DB上使用Hibernate(使用jdbc)。

这不是连接池的问题,因为我成功使用Hibernate-c3p0,它似乎与Oracle本身无关,因为如果直接在DB上执行,所有查询都会立即返回。

此外,Hibernate SessionFactory只能在应用程序启动时正确创建一次,并且并发性根本不是问题,因为测试是针对单个用户完成的。

最后,我的数据库IP地址在我的应用程序服务器/etc/hosts中得到了正确解析,因此甚至可以丢弃与DNS相关的问题(我使用两个不同的虚拟机,DB和APP服务器)。

我不知道该找什么,有什么帮助?

1 个答案:

答案 0 :(得分:1)

这听起来就像你的会话工厂对象在第一个查询中被旋转。通常我尝试在应用程序启动时初始化会话工厂,以避免在发出第一个查询时出现这种情况,因为通常用户可以看到这种减速。在应用程序启动时预先执行此操作时,您将避免这种情况。