社区
Java SE
帖子详情
请问数据库中的双步提交(Two-Phase Commit,2PC)是什么意思?
wingardium
2010-05-21 11:29:06
请举个具体例子说明下,谢谢!
...全文
440
5
打赏
收藏
请问数据库中的双步提交(Two-Phase Commit,2PC)是什么意思?
请举个具体例子说明下,谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
problc
2010-05-21
打赏
举报
回复
主要是事务的嵌套会发生2PC
火龙果被占用了
2010-05-21
打赏
举报
回复
JTA 在 J2SE 环境中是没办法测试的,必须在 J2EE 应用服务器中。
J2EE 应用服务器为什么说会有好的、差的,免费的和商业的,其中最为重要的一点就是对于事务的处理能力。像开源的 J2EE 应用服务器在这一点上是没办法跟 WebLogic, WebSphere 这些商业 J2EE 应用服务器相比拟的。
在 J2EE 环境中使用 JTA 事务与 Local 事务的代码是一模一样的,对于开发人员来说这绝对是希望听到的。
Local 事务就是通常所称的 Connection 的事务
火龙果被占用了
2010-05-21
打赏
举报
回复
2-PC 称为“两阶段提交”,2-PC 是分布式事务协议。
比如说一个事务涉及 Oracle、MySQL 和 MS SQLServer 三个数据库的操作,举个最简单的例子,要在这三个数据库中各插入一条数据,但必须保持在一个事务中,要三个插入全部成功才算成功,如果只成功了一个或者两个,那么所有的操作都进行回滚,而 2-PC 就是用来干这事的。
两阶段提交需要有个中间协调人。在 Java 中只有 JTA 才能支持两阶段提交,而这个中间协调人就是 J2EE 应用服务器。
继续刚才那个事务,两个阶段如下:
一、各数据库在执行完 INSERT 后,J2EE 应用服务器在收到提交指令,这时通知各数据库进行事务提交准备。
数据库在收到响应后,进行准备工作,基本上是一个预提交工作,如果能提交则响应 J2EE 应用服务器是 能成功提交的,如果无法提交则响应 J2EE 应用服务器是无法提交的。
二、J2EE 应用服务器在收集到所有的响应之后进行判断,如果在第一阶段收到的信息都是可提交的,那么就通知所有的数据库进行提交;如果在第一阶段收到的信息有一个是无法提交的,那么就通知所有的数据库进行回滚操作。
通过这些步骤,可以看出分布式事务处理是很耗时的,也是相当麻烦的。因为数据库在第一阶段给事务协调器响应后如果能提交,在第二阶段就必须要保证事务能被提交,这是数据库要做的事情。
这里的 J2EE 应用服务器是 2-PC 的协调者。2-PC 在 JAVA 中不仅可以用于分布式数据库事务,也能应用于 JMS 事务。
要支持分布式事务,那么数据库就必须支持两阶段提交协议,否则是不能支持的。
wingardium
2010-05-21
打赏
举报
回复
[Quote=引用 1 楼 hardycheng 的回复:]
http://en.wikipedia.org/wiki/Two-phase_commit_protocol
维基百科中的解释
[/Quote]
但是里面没有实际例子。
hardycheng
2010-05-21
打赏
举报
回复
http://en.wikipedia.org/wiki/Two-phase_commit_protocol
维基百科中的解释
数据库
并发控制技术论文
2
PC
是指Oracle的两阶段
提交
协议(Two-
Phase
Commit
protocol)。 2
PC
用于确保所有分布式事务能够同时
提交
(
Commit
)或者回滚(Rollback),以便使的
数据库
能够处于一致性状态(consistent state)。 分布式事务可以...
Jim Gray
数据库
操作系统注意事项2
PC
数据库
操作系统注意事项,JimGray在1979年发表的论文。
中
间有提到2
PC
(搜索 TWO
PHASE
COMMIT
PROTOCOL可以找到)
Oracle
数据库
大事务的数据更改对
数据库
内部的影响
本课程以Oracle 10g
数据库
为基础,来... 那么在这种情况下,当用户执行
commit
提交
操作,
数据库
是如何处理这些已经写到磁盘的脏数据块的? 本课程就以实验的方式得出数据,来验证以上所提出的问题。
正确理解二阶段
提交
2
PC
(Two-
Phase
Commit
)
明确问题草稿方案原子
提交
协议希望实现的2个特性正确的二段
提交
协议(Two-
Phase
Commit
)二阶段
提交
协议如何满足安全性(Safety)二阶段
提交
协议如何满足存活性( Liveness)如何应对超时超时终止协议 如何应对宕机...
Two-
phase
commit
(2
PC
) 协议介绍 (分布式数据一致性操作)
2
PC
协议在多数据
中
心,多路写的情况下,保证数据一致性而设计的协议。 2
PC
思想比较简单,是一个失败,全体不成功;如果成功,就没有一个失败的简单逻辑,实现简单。 本文讲述其大概流程,client
提交
...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章