使用JPA的奇怪表现,我错过了什么?

时间:2010-08-13 05:41:08

标签: oracle hibernate jpa

我们有JPA - > Hibernate - > Oracle设置,我们每秒只能处理22个事务(每次事务两次读取和一次写入)。 CPU,磁盘和网络不是瓶颈。

我有什么遗失的吗?我想知道DBA已经应用了某种类型的oracle强制限制吗?

  • 网络不是问题,因为当我在桌面上进行原始读取时,我可以每秒进行2000次读取。问题显然是写的。
  • CPU 不是应用服务器上的问题,CPU基本上是闲置。
  • 磁盘不是应用服务器上的问题,数据在处理开始前已完全加载到内存中

2 个答案:

答案 0 :(得分:0)

可能值得将性能与不同的客户端技术(甚至是使用SQL * Plus的简单测试)进行比较,看看你是否能够击败这种性能 - 它可能只是资源不足或配置错误的数据库。

我还将直接在d / b服务器上运行的SQL Plus的结果与在运行Java代码的任何机器上本地运行的结果进行比较(它通过SQL进行通信 Net )。这将确认问题是否低于Java层。

说实话,你的JPA代码和数据库本身之间有很多层,诊断原因会很有趣。 。 。我记得一个神秘的d / b性能问题解决了自己错误配置的网卡 - 数据库管理员坚决认为数据库没有出现任何瓶颈。

答案 1 :(得分:0)

听起来应用程序在不到0.05秒的时间内完成了一次交易。如果从应用程序中提取SELECT和UPDATE语句并使用SQL * Plus或其他工具自行运行它们,它们需要多长时间,如果你把语句的时间相加,它们是否接近0.05?数据来自查询中使用的数据,哪些最终会在UPDATE中使用?完全可能的是,减速不是数据库,而是应用程序中的其他位置,例如数据采集阶段。也许像分析器这样的东西可以用来找出应用程序花费时间的位置。

分享并享受。