一次事务过程

第二篇 一次事务过程

对于开发人员来说,我们经常做的是启动一个事务,执行SQL,提交事务。这就完成了我们的工作。但是,就在这些简单的动作背后,网络和数据库都做了些什么呢。我们都想知道。

下面以一个实例来说明。
背景:用户正运行一个连接到Oracle数据库的客户端应用程序,是一个员工档案管理程序。
过程:
1.用户修改了一笔员工档案记录的姓名,并单击了“保存”,这时客户端应用程序通过网络向Oracle服务器进程发送了一条SQL UPDATE语句;
(注:关于客户与服务器的如何连接的过程,将另起篇幅说明。将会涉及到:Oracle Net组件、MTS、监听器、Dispatcher等概念)
2.服务器进程收到UPDATE语句请求以后,在SGA的SQL区中查找同样的语句,如果找到了则执行。否则,服务器进程就检查语句的语法,并对它进行分析,从而以最优的方法执行(这个过程叫做parsing and optimizing)。一旦这个处理完成了以后,这条语句就缓存在SGA的SQL共享区中;
3.服务器进程将原来的员工的、数据拷贝到回滚段(或重做表空间,即undo tablespace,oracle后来的版本增加了Undo tablespace功能,以取待原有的system表空间中的回滚段的功能)。将原来的员工数据拷贝到回滚段中是为了将来用户取消事务而备用的。在这个过程完成之后,服务器进程修改数据库的数据块以改变员工的姓名。修改后的数据库的数据块此时保存在SGA的数据库缓冲区中。
4.服务器进程在SGA日志缓冲区内记录加滚段和数据库块的改变信息。(注意:回滚段的改变也同样要写入日志,因为它也是事务的一部分);
5.客户端的用户提交事务;
6.LGWR(log writer)进程将这个事务的日志信息从日志缓冲区中写入当前的磁盘日志文件中。当操作系统确定写日志文件已经正确完成时,事务才算是提交了。
7.服务器进程向客户发送信息以确认提交。

在这整个过程中有个疑问:只是将事务的日志写入日志文件,但数据库块,也就是员工姓名改变后的数据并未写入磁盘文件,这是为什么呢?进而我又会想到,如果有多个事务同时作用于相同的数据呢。这时,Oracle是怎么处理这些问题的呢?带着这些问题,继续学习,弄懂后再贴出来。:)

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程简介: 课程总计41课时,从什么是事务讲起,直到分布式事务解决方案,很的0基础基础与提升系列课程。对于难以理解的知识点,全部用画图+实战的方式讲解。 第一部分:彻底明白事务的四个特性:原子性、一致性、隔离性、持久性,用场景和事例来讲解。 第二部分:实战讲数据库事务的6中并发异常:回滚丢失、覆盖丢失、脏读、幻读、不可重复读、MVCC精讲。 第三部分:彻底搞清楚4种事务隔离级别:READ_UNCOMMITTED 读未提交隔离级别、READ_COMMITTED 读已提交隔离级别、REPEATABLE_READ 可重复度隔离级别、SERIALIZABLE 序列化隔离级别 第四部分:彻底搞清楚MySQL的各种锁:行锁、表锁、共享锁、排它锁、Next-Key锁、间隙锁、X锁、S锁、IS锁、IX锁、死锁、索引与锁、意向锁等。 第五部分:彻底搞清楚Spring事务的7种传播级别的原理和使用:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROPAGATION_NESTED分布式事务的理论基础:RPC定理、BASE理论、XA协议都是什么,原理是什么,有什么关联关系 第六部分:分布式事务的5种解决方案原理和优缺点:2PC两阶段提交法、3PC三阶段提交法、TCC事务补偿、异步确保策略、最大努力通知策略 第七部分:阿里巴巴分布式事务框架Seata:历经多年双十一,微服务分布式事务框架,用一个Nacos+Spring Cloud+Seta+MySql的微服务项目,实战讲解阿里的分布式事务技术,深入理解和学习Seata的AT模式、TCC模式、SAGA模式。 课程资料: 课程附带配套2个项目源码72页高清PDF课件一份阿里巴巴seata-1.1.0源码一份阿里巴巴seata-server安装包一份

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值