【发布时间】:2014-04-08 22:18:11
【问题描述】:
我们使用的是 ORACLE 11.2.0.3.0,配置为 3 节点 RAC。
在我们的应用程序中,我们通过 UCP 和 OJDBC 进行休眠,并具有与 RAC 兼容的版本。 Hibernate 使用一些序列来获取数据库中任何记录的 ID。在我的数据库中,我们有一个带有 UNIQUE_CONSTRAINT (some_value) 的表。它用于同步许多应用程序实例,应用程序中的每个事务都需要此表中的唯一行。因此应用程序 A 尝试在此表中插入 (some_value="A"),如果其他应用程序已经插入了具有 (some_value="A") 的行,则首先获取 ORA-00001 违反唯一约束,然后使用其他值重试此操作 (some_value ="B")。
UNIQUE_CONSTRAINT 经常触发。就像 8tx 中的一个。
我们运行两个测试:
service pinned to one node: response time avg 6ms
service on all 3 nodes: response time avg 800-1000ms
高级问题是为什么?当 UNIQUE_CONSTRAINT 发生时,3 节点 RAC 中发生了什么,以及为什么它会减慢如此多的应用程序。我该如何诊断这种情况?
迈克尔
【问题讨论】:
标签: sql oracle hibernate oracle11g