一些背景:
我有一个工作流应用程序(java ee.),其中有要执行的节点。PostgreSQL 9.1.2 与 Spring TX 管理一起使用。
节点在自己的事务中执行(必需,已提交读)。node-1(TX1) 将创建一个表 TB_NODE_1 将数据传递给下一个节点——node2。这是在 TX1 中完成的。
TX1 提交后,节点 2 将被触发执行(在 TX2 中)。node2 做的第一件事是读取 TB_NODE_1 作为其输入。
问题:
它发生了,主要是在重负载下(真正的 LARGE 查询同时命中 PostgreSQL),node2 抱怨:关系 TB_NODE_1 不存在。
一些细节:
- 我使用“create table tb_node_1 as select * from table_foobar where ...”创建 TB_NODE_1。
- TX1 保证由 Spring TX 提交。
- 如果 TX1 回滚,PostgreSQL 将不会保留在 TX1 中创建的表。
- TX1 没有回滚(TX1 没有异常)。
似乎 PostgreSQL 给了我一个 TX1 已提交的假结果,但实际上它没有。
有人有同样的问题吗?