大家好,有一个分布式数据库事务处理方面的问题想请教一下,我现在使用分布式事务框架atomikos来处理分布式数据库事务,现假设有两个数据源ds1和ds2,现在有个分布式的更新操作放进了同一个分布式事务中,分别利用ds1和ds2来进行处理,假如在两阶段提交的第一阶段,ds1和ds2均能预提交成功,现在分布式事务管理器在向两个数据源分别发送正式提交指令时,针对ds1的提交指令发送成功,但是针对ds2的指令因为网络问题或者其他问题,没能发送成功,在实际情况中,有可能出现此类情况吧?
这个时候,ds1的数据是最新的数据了,ds2对应的数据库将会怎么处理自己的数据呢?是默认提交呢,还是默认回滚,或者将对应的事务相关的信息记录进日志并等待重连事务管理器后根据双方的错误日志进行恢复?
如果是第三中处理情况,ds2会不会锁定对应的数据记录并阻止其他的读取/更新操作?因为ds2对应的数据库仍然有可能被其他的应用程序正常访问,在访问期间可能涉及到对相关被破坏的数据的处理。
请高手指教,谢谢。
这个时候,ds1的数据是最新的数据了,ds2对应的数据库将会怎么处理自己的数据呢?是默认提交呢,还是默认回滚,或者将对应的事务相关的信息记录进日志并等待重连事务管理器后根据双方的错误日志进行恢复?
如果是第三中处理情况,ds2会不会锁定对应的数据记录并阻止其他的读取/更新操作?因为ds2对应的数据库仍然有可能被其他的应用程序正常访问,在访问期间可能涉及到对相关被破坏的数据的处理。
请高手指教,谢谢。
解决方案 »
- 查询数据的问题
- weka 连接 mysql的问题
- 我的数据表都是以这三种格式存在的:xxx.ISD,xxx.frm,xxx.ISM,如何恢复这种数据库?
- mysql安装问题求助
- mysql将文本文件导入到数据库表中出现的显示不正常的问题
- 一个表和多个表的问题
- 要把排序信息输入到一个表的字段中或者一个数组中,怎么办呀??
- -------------???columns used 和available columns 是什么意思????-------------
- 为什么mysql的longblob类型数据上传超过1M就不行了?
- mysql 分组查询统计
- MySQL服务器一般能处理多大数据量的处理(标准配置的硬件设备)。
- mysql一次现实 多种逻辑操作
这种情况在oracle和db2等其他数据库都存在,通常在系统恢复正常后,会有监控工具(有的数据库不一定提供)扫描这种in-doubt的数据源,尝试恢复。也可能需要dba手工进行处理。总之,这种情况一般称为“网络通讯危险期”,有可能导致事务不可追踪和恢复