首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JTA隔离分布式(全局)事务

使用JTA隔离分布式(全局)事务
EN

Stack Overflow用户
提问于 2017-05-01 02:00:14
回答 1查看 512关注 0票数 6

正如我们所知,隔离性和原子性是两个不同的属性。原子性是“全有或全无”的属性,事务要么成功完成,要么完全失败。原子性得到了JTA和JTA所基于的X/Open XA两阶段提交标准的明确支持。

我的问题是: JTA支持隔离吗?我指的只是我们使用EJB和JDBC时的情况,没有框架(例如Spring)或JTA以外的事务管理器。

换句话说,假设我们有多个线程,假设其中一个线程执行全局事务,该事务对多个数据库执行访问和修改。其他线程在数据库上执行修改,但每个线程只在一个数据库上执行修改,并且在一个事务中执行。

我们是否会在全局事务中遇到诸如脏/可重复/幻影读取之类的并发问题?

AFAIK无法在JTA中指定隔离级别。

EN

回答 1

Stack Overflow用户

发布于 2017-05-04 23:24:43

孤立是酸家族的害群之马。严格地说,它不是事务管理器的属性。它完全由资源管理器(即数据库)控制。针对数据库的所有事务都在某个隔离级别上运行。XA (JTA)事务的不同之处在于如何选择该级别。

在大多数情况下,不可能实现对常规事务的每事务隔离级别选择控制,尽管一些资源管理器可能允许SQL set transaction isolation命令作为XA控制的事务分支中的第一条语句。有时使用的另一种模型是XAResource.start的自定义标志,例如oracle采用的一种方法。对于两者都不支持的数据库引擎,XA事务缺省为为数据库服务器全局配置的隔离级别。

请注意,即使对于“可序列化”的事务、JTA或其他事务,您仍然会遇到令人头疼的问题。阅读Peter Bailis优秀的ACIDRain论文,然后去找一个角落静静地流泪。

http://www.bailis.org/papers/acidrain-sigmod2017.pdf

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43709565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档