- 浏览: 935719 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (229)
- spring (20)
- myBatis (1)
- javase (31)
- 设计模式 (1)
- jQuery EasyUI (4)
- 编程工具 (8)
- Hibernate (3)
- tomcat (3)
- js (27)
- Jboss (2)
- dom4j (1)
- 操作系统 (5)
- 数据库 (26)
- springmvc (6)
- 程序人生 (5)
- JDBC (1)
- android (6)
- groovy (2)
- memcached (11)
- Nginx (8)
- maven (7)
- javaEE (13)
- jquery (3)
- linux (4)
- 单元测试 (6)
- 算法 (6)
- resin 服务器 (5)
- 缓存 (8)
- slf4j日志 (1)
- resin 服务器;log4j (2)
- 性能调休 (25)
- 网络编程 (10)
- 多线程 (9)
- json (1)
最新评论
-
lliiqiang:
主要原因还是因为html格式太复杂多变了。很难过滤所有的危险代 ...
java 防止xss攻击 -
u011670948:
Mustache模板遍历输出数据 -
u011670948:
Mustache模板遍历输出数据 -
masuweng:
spring @Autowire 的注解默认是按类型注入bean -
masuweng:
spring @Autowire 的注解默认是按类型注入bean
转:http://space.itpub.net/?uid-17203031-action-viewspace-itemid-716756
随着系统的复杂性不断增加,我们所面对的分布式系统渐渐增加。分布式文件系统、分布式消息队列系统等等层出不穷,在一些行业特别是互联网行业应用广泛。分布式数据库 也是目前使用比较常用的分布式系统之一。
简单来说,分布式数据库就是通过多个相互连接的数据库节点(注意不是 Instance ),来支持前端系统数据访问需要的数据库组织结构。各个节点之间相互独立、自我管理 ( site autonomy )。分布式数据库系统追求的主要目标包括:可用性( availability )、准确性( accuray )、一致性( concurrence )和可恢复 性( recoverability )。
在一些横跨多部门、多数据源和多子系统的复杂系统环境下,使用和组织分布式数据库可能是一种低成本且更具有灵活性的解决方案。
1 、从 Remote Transaction 到 Distributed Transaction
数据库事务是每一个 DBMS 最核心关注的问题。在分布式数据库环境下,我们的事务对象可能会横跨多个数据库对象。为了保证 ACID 的基本事务规则,引入了分布式事务( Distributed Transaction )的概念。首先我们区分一下几个基本的事务类型:
ü Local Transaction 本地事务
SQL 操作语句数据范围只是限制在本地节点上。
ü Remote Transaction 远程事务
事务中进行的增加、修改和删除数据对象,存放在远程 Remote 端的数据库上。本地数据库对象没有参与到事务范围中去。
ü Distributed Transaction 分布式事务
所谓分布式事务,就是事务过程中涉及到对本地和远程对象的增加、修改和删除操作 。
这里注意一个问题,我们在这里讨论的分布式事务,是通过数据库自身特性实现的分布式事务特性。 目前,很多中间件,如 Jboss ,都提供了中间件级别的分布式事务支持。这种情况下,中间件会向 Oracle 提出分布式事务管理权获取,之后的事务管理过程交付给 Jboss 管理。这种情况不是我们今天要讨论的分布式事务问题。
2 、事务对象实体
完全的分布式事务对象是有多个角色的,具体来说有如下几个类型:
ü Client ( C )客户端:在分布式事务中,能够获取到远程数据库服务器 上对象引用( reference )的结点对象;
ü Server ( S )服务器:在分布式事务中,直接被引用,或者被其他节点请求获取到数据的节点对象;
ü Global Coordinator ( GC )全局协调节点:是分布式事务启动的节点;
ü Local Coordinator ( LC )本地协调节点:引用了其他节点上的数据,来完成自身工作的节点对象。
ü Commit Point Site ( CPS )事务提交站点:事务涉及的节点中,具有 commit_point_strength 参数的站点。它通常是分布式事务中,最重要的一个站点对象。在发生“ in-doublt ”事务的时候,该站点是不能出现冲突的。
ü Commit_point_strength :是 init.ora 中的一个初始化参数。用来在分布式环境中确定 CPS 站点。
SQL> show parameter commit_point;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
commit_point_strength integer 1
注意,上面我们提及的分布式事务涉及对象,是指涉及的节点角色。在通常的 Distributed Transaction 中,一个实际的 node 是可以充当多个角色的。
3 、 Two-Phase Commit (二阶段提交 )
Two-Phase Commit 是分布式数据库系统中一个经典事务模型,用于解决多个数据库节点之间在进行事务提交过程中的方式问题。
二阶段提交一共具有两个阶段,分别为准备阶段( Prepare Phase )和提交阶段( Commit Phase )。一个分布式事务,要经历两个阶段过程:
ü 准备阶段 Prepare Phase
首先,事务涉及到的各个节点需要确定一个 commit point site 。同时,全局协调者( Global Coordinator )向所有其他的节点(除了 commit point site )发消息,要求进行分布式 commit 或者 rollback 动作。
在 GC 发送消息的过程中, Local Coordinators 会将这些消息传播到其依赖的节点上。保证消息可以传到分布式事务涉及到的所有节点对象。
对这些被通知到的节点而言,可能的反馈结果有三个: prepared 、 abort 和 read-only nodes 。
注意,如果在这个过程中,有节点发出 abort 过程,整个过程就转入到全局 rollback 过程。
在反馈结果中,各个节点同时将自己的 SCN 号发送到 Global Coordinator 节点。 GC 来确定出各节点中最大的事务 SCN 号。
经过了 prepared phase ,我们就可以进入到 commit phase 阶段。在 prepared phase 结束一直到 commit phase 成功结束期间,除了在 commit point site 上进行的事务外的其他事务都进入所谓的“ in-doubt ”状态。
ü 提交阶段 commit phase
GC 向 commit point site 通知到对比完的最大的 SCN 编号。此时, Commit Point Site 将进行 commit 动作或者 rollback 动作。注意,此时在 cps 上的锁被释放掉。
如果 CPS 成功的进行过 commit 或者 rollback 动作,它会通知到 Global Coordinator 进行提交的时间点。
该通知会通过 GC/LC 的传导机制,传导到所有的节点进行 commit/rollback 动作。
如果所有的过程全都成功结束,每个语句都在使用相同的 SCN 进行提交。之后, RECO 进程开始进行分布式事务清理过程,清理在“ dba_2pc_pending ”和“ dba_2pc_neighbors ”中相应的信息。之后,各个节点进入了“ forget ”阶段,开始“忘记”事务信息。
ü 忘记阶段 forget phase
当全部参与分布式事务的节点都完成了相应的 commit 或者 rollback 操作,它们就会通知到 commit point site ,告知当前事务操作结果。 Commit point site 就可以 forget 事务信息了。
各个节点通信并不是直接同 cps 进行,而是同 GC 。 GC 将结果信息告知给 commit point site ,之后 cps 将该事务的信息清除掉。
Cps 在清除完事务信息之后,通知 GC 自身已经清楚了分布式事务状态。 GC 之后就清楚自身上的事务信息。
4 、结论
本文是一片纯理论介绍的文章,介绍了 Oracle 分布式事务模型的内容。
参考文献:mos 13229.1
发表评论
-
数据库树型设计[转]
2017-12-26 16:52 1039转:http://www.cnblogs.com/kissd ... -
[转]解惑 spring 嵌套事务
2017-02-08 19:36 804转:http://www.iteye.com/topic/35 ... -
mysql-java数据映射类型
2017-01-19 14:23 2008Mysql-Java 数据类型映射 My ... -
是否采用读写分离方案
2017-01-03 17:48 1704我们怎么决定,是采 ... -
数据库单表拆分问题
2017-01-03 17:37 3380本期焦点问题:单一数据库内分表 本期多个项目出现了在单一数 ... -
mysql limit性能问题
2016-07-18 16:55 787来看一条sql: SELECT m_id ... -
mysql去重查询
2016-02-19 10:53 941查询一个表有多少个kugouId,去掉重复数据,语句: S ... -
mysql导入导出数据
2015-12-23 12:01 616最近在帮产品做一个导数据的请求,好恶心不想说了。DBA不帮 ... -
springJdbc 插入数据返回主键
2015-11-24 16:22 964public long addMsg(final SysMe ... -
mysql 默认自动更新第一个timestamp字段
2015-09-11 18:01 11091.MySQL默认表的第一个timestamp字段为NOT ... -
简单case when用法
2014-10-14 15:59 1198例子一: 有一个表,数据如: mysql> se ... -
[转]exists真的就比in的效率高吗?
2014-09-23 15:41 932转:http://blog.csdn.net/jwisdom ... -
Union和Union All的区别 [转]
2014-05-28 12:15 923转 : http://blog.csdn.net/ ... -
mysql主从数据库架构[转]
2014-05-22 17:54 813转:sinooyj.iteye.com/blog/12133 ... -
mysql锁[转]
2014-04-24 15:34 862转:http://xu20cn.blog.51cto ... -
spring结合mysql事务注解@Transactional不起作用的问题
2014-04-23 18:04 24326最近遇到的一个比较诡异的问题,貌似各种配置都正确了,事务不 ... -
mysql设置autocommit关闭
2014-04-22 21:15 3700mysql默认开启auto commit,可以,通过这几个 ... -
MySQL 查询缓存[转]
2014-03-25 12:21 592转:http://www.tool.la/MYSQL41/0 ... -
MySQL数据库中缓存管理的思路解析[转]
2014-01-21 21:45 823转:http://tech.it168.com/a2011/ ... -
mysql 的gruop by 关键字特殊情况
2013-10-29 14:08 900mysql 的gruop by 用法,并不遵循标准的sql ...
相关推荐
浅述ORACLE EBS R12后台管理新变化.pdf Oracle E-Business Suite (EBS) 是 Oracle 公司享誉全球的软件之一,在实际工作中也被称为 Oracle ERP (Enterprise Resource Planning)。自1998年面世以来,已经推出了6个...
《浅述Oracle数据库迁移应用》这篇文档主要探讨了在Oracle数据库环境下进行迁移的不同方法,以及如何根据实际需求选择合适的方式。Oracle数据库作为一种广泛应用于中大型数据环境的关系型数据库,其迁移操作是数据库...
"浅述Oracle数据库的备份与恢复方法" Oracle数据库的备份与恢复方法是数据库管理中最重要的方面之一。随着计算机的普及和数据电子化,数据安全工作不可忽视,如 果数据丢失,轻则是因恢复数据而降低了工作效率,...
分布式电源是一种新型的能源利用方式,它与传统的集中式发电不同,主要分布在用电负荷中心附近,可以直接为用户提供电能,或者以微网的形式接入电网。随着技术进步和可再生能源的推广应用,分布式电源在配电网中的...
分布式光纤传感技术是一种基于光纤的新型监测技术,它在桩基检测中展现出了显著的优势。传统的桩基检测方法包括透射波法、低应变反射波法和高应变反射波法,每种方法都有其局限性。 透射波法依赖于混凝土浇筑质量来...
随着全球能源转型的不断推进,分布式电源因其环保、高效的特点得到快速发展,并逐渐渗透到配电网中。分布式电源是指安装在用户附近或与电网连接的小型发电设施,典型例子包括太阳能光伏、风力发电、小型水电等。这种...
分布式电源接入是近年来随着可再生能源技术的发展而兴起的一种新型能源配置方式,它通过将太阳能、风能等可再生能源发电设备连接到电力系统中,减少了对传统集中式发电站的依赖。分布式电源的接入给传统的配电网带来...
浅述智能电网的发展
1. 建筑索结构概念: 建筑索结构是指在建筑结构中采用索作为主要受力元件,或者通过张拉索对其他结构施加预应力,以改善结构受力性能的一种结构体系。它能有效提高结构的稳定性和承载能力,尤其在大型公共建筑、体育...
网页设计艺术浅述.pdf
**关键技术**:MR的实现依赖于多种先进技术,如实时三维计算机图形学、广角立体显示、头部和身体追踪、触觉反馈、声音合成和空间化、模式识别、分布式计算等。此外,新兴技术如情感计算、可穿戴交互、脑计算、远程...
精品教育教学资料
浅述汽车企业管理控制系统.pptx
浅述工程质量的控制论文.doc
电子信息工程的发展浅述.pdf
【人工智能在天气预测中的应用】 随着科技的飞速进步,人工智能(AI)逐渐渗透到各个领域,其中包括天气预测。天气预测对于人们的生活、工作及安全至关重要,而AI技术的引入,使得这一领域步入了智能化、精准化的...
浅述操作系统的安全与防范.pdf