事务
(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction
和end transaction
语句(或函数调用)来界定。事务由事务开始(begin transaction
)和事务结束(end transaction
)之间执行的全体操作组成。
例如:在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
事务的理解,先要明白它的四种属性(特性):即ACID
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
明白这四种属性,就差不多明白事务是什么回事了,也知道什么时候使用了。
事务并发处理会产生的问题
丢失更新
当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,会发生丢失更新问题、
每个事务都不知道其它事务的存在。最后的更新将重写由其它事务所做的更新,这将导致数据丢失。
脏读
当第二个事务选择其它事务正在更新的行时,会发生未确认的相关性问题。
第二个事务正在读取的数据还没有确认并且可能由更新此行的事务所更改。
不可重复读
当第二个事务多次访问同一行而且每次读取不同的数据时,会发生不一致的分析问题。
不一致的分析与未确认的相关性类似,因为其它事务也是正在更改第二个事务正在读取的数据。
然而,在不一致的分析中,第二个事务读取的数据是由已进行了更改的事务提交的。而且,不一致的分析涉及多次(两次或更多)读取同一行,而且每次信息都由其它事务更改;因而该行被非重复读取。
幻像读
当对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻像读问题。
事务第一次读的行范围显示出其中一行已不复存在于第二次读或后续读中,因为该行已被其它事务删除。同样,由于其它事务的插入操作,事务的第二次或后续读显示有一行已不存在于原始读中。
分享到:
相关推荐
Spring事务原理、Spring事务配置的五种方式
事务原理MVCC、Readview和行锁原理分析直播中(1).zip事务原理MVCC、Readview和行锁原理分析直播中(1).zip事务原理MVCC、Readview和行锁原理分析直播中(1).zip事务原理MVCC、Readview和行锁原理分析直播中(1).zip事务...
( 事务处理--介绍事务原理和事务实现.docx )
C#数据库事务原理及实践,C#数据库事务原理及实践
事务的基本概念-ACID 2 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元 (unit)。在关系数据库中,一个事务由一组SQL语句组成。事务应该具有4个属性: 原子性、一致性、隔离性、持久性。这...
Spring事务原理.txt
分布式事务原理及解决方案.docx
CSharp数据库事务原理及实践,数据库事务是指作为单个逻辑工作单元执行的一系列操作。
c#事务原理 脏读 不可重复读 幻想 企业级的数据库每一秒钟都可能应付成千上万的并发访问,因而带来了并发控制的问题。由数据库理论可知,由于并发访问,在不可预料的时刻可能引发如下几个可以预料的问题:
Spring注解驱动开发第35讲——声明式事务原理的源码分析
主要带领大家深入理解Spring事务原理,Spring事务的传播属性
LCN的补偿事务原理是模拟上次失败事务的请求,然后传递给TxClient模块然后再次执行该次请求事务。 模拟场景演示 若存在事务发起方、参与方A、参与方B。调用关系图如下 那么他们正常执行业务的时序图为: ...
4-4 Jms事务原理 4-5 Jms-session事务实例 4-6 Jms-spring事务实例 4-7 外部事务与JTA 4-8 JTA单数据源事务实例 4-9 JTA多数据源事务实例 第5章 分布式系统 介绍了分布式系统的定义、实现原则和几种形式,详细介绍...
各框架的组各下来,版本就特别的多,针对简单的 使用注解来管理事务的,研究了两天,要不网上写的不清楚,要不版本都很旧了,所以就是不回滚,Spring 的配置太灵活了,在加上新手,根本就不可能明白Spring的原理,...
主要介绍了Spring事务处理原理步骤详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
ORACLE体系结构、并发与多版本,事务机制、Sql优化基本方法介绍
springboot中事务的使用demo,用jpa链接的Mysql数据库.
最后阐述对国内分布式事务数据库的发展历程和发展格局趋势预测,做到听众深入浅出掌握分布式事务数据库的技术架构、分布式事务原理及功能特性、分布式事务的测试验证方法,从分布式事务数据库的发展历程感知行业变化...
分布式事务服务 (Distributed Transaction Service, DTS) 是一个分布式事务框架,用来保障在大规模分布式环境下事务的最终一致性。DTS 从架构上分为 dts-core 、dts-schedule、 dts-server 两部分,dts-core是一个...
事务处理原理(第2版)英文版 summary of topics The enterprise that pays for a transaction processing system wants it to give fast service, be inexpensive to buy and operate, and be scalable as usage ...