1事务隔离级别
事务有ACID特性:
A:atomicity 原子性 要么都操作成功,要么就都失败。只有查询的事务很容易处理原子性,但是有更新和插入动作的事务,就要注意并发对这部分数据的影响了。
C:consistency 一致性 当某一个字段是表的唯一标示时,如果事务修改了这个标示并破坏了表唯一性,那么系统可以自动撤销事务的这个动作。
I:isolation 隔离性 隔离性也可以叫做并发控制 concurrency control 可串行化 serializability 锁 locking 也就是说呢很多歌事务一起提交的时候彼此是看不到对方的,其也是基于一个粗粒度的锁机制 granular lock 所以就会有某数据库支持行锁,表锁等
D:durability 持久性 事务一旦提交就一定是永久性保存的,即使发生宕机,数据库也是可以恢复的,但是这只是事务系统的保证,并不会衍生到硬件级别的。也就是说,持久性是保证事务系统的高可靠性 high reliability 不是高可用性 high availability,例如raid卡坏了和自然灾害就没法通过持久性来保证数据还在了。
事务的分类:
扁平事务 flat transactions 这种事务在一般系统中使用率很高,我写的ostocyjshop基本都是,很简单很好懂。但是对于分阶段进行的业务就不适用扁平事务了,因为回滚的代价太高了。
带有保存点的扁平事务 flat transactions with savepoints 当使用begin work 开启一个事务时都会默认加入一个保存点,保存点的计数是延续的,不会因为回滚到某个点而重新计数。
链事务:chained transactions 是保存点事务的一个变体,由于保存点是容易丢失的 volatile 不是 persistent的,所以当恢复保存点时,事务不能从最近的一个保存点继续执行了,必须重新执行了。链事务的意思是:一个事务开始时,释放不需要的数据对象,将上下文处理传递给下一个事务,形成一个原子性的合并事务。下一个事务是知道上一个事务的结果的,当这个合并事务需要被回滚时,只能回滚到最近的一个保存点,链事务在提交后释放持有的锁,但是保存点事务会一直持有从头到尾所有点的锁。(应该是这个意思)
嵌套事务 nested transactions 你可以理解成一个树结构,有一个根控制着所有的节点,节点控制叶子。根只能控制节点的逻辑,而无法触及叶子的行为。叶子的行为交由节点来控制。叶子可以是一个子事务,提交给节点,但是效果并不会反映到db中,必须根提交了事务才会把所有节点的事务反映到db中。如果叶子中有事务失败,那么所有事务都要回滚。嵌套事务是可以用保存点事务来模拟的,但是锁的控制上相对复杂。要真正的实现并发事务处理,还是需要db支持嵌套事务的。
分布式事务 distributed transactions 及扁平事务分布在网络节点中。mysql的innodb引擎无法支持并行事务,可以用保存点事务模拟。
事务的隔离级别
READ UNCOMMITTED 对事务来说叫做浏览访问 browse access
READ COMMITTED 在mysql5.0前对于这种事务隔离下,会造成master和slave的不一致问题,主要问题还是记录sql和表变化的日志文件的格式是statement而不是row的,也就是非行级别而是语句级别的。但在mysql5.1后都是row级别了,不会有不一致问题。
REPEATABLE READ 是mysql inndb引擎的默认事务级别
SERIALIZABLE 主要用于innodb存储引擎在分布式环境下的事务隔离级别
未授权读取
授权读取
可重复读取
序列化
相关推荐
mysql事务处理的意义 事务处理机制在程序开发过程中有着非常重要的作用,它可以使整个系统更加安全,例如在银行处理转账业务时,如果A账户中的金额刚被发出,而B账户还没来得及接收就发生停电,这会给银行和个人带来...
关于mysql的事务处理 public static void StartTransaction(Connection con, String[] sqls) throws Exception { if (sqls == null) { return; } Statement sm = null; try { // 事务开始 System....
nodejs + mysql 事物处理问题 呵呵 看了就知道 记得npm install啊 需要的东西啊 本想免费 苦于没积分 ,需要的的同学,给点分吧
MySQL5.X都已经发布好久了,但是还有很多人认为MySQL是不支持事务处理的,这不得不怪他们是孤陋寡闻的,其实,只要你的MySQL版本支持BDB或InnoDB表类型,那么你的MySQL就具有事务处理的能力。这里面,又以InnoDB表...
mysql事务处理用法与实例详解
0 数据异常 读数据异常 写数据异常 写偏序异常 数据异常发生的原因 1 MySQL的事务处理技术概述 2 MySQL的并发访问控制技术 3 主流数据库的事务处理技术
封装了java使用jdbc对mysql的操作,以及java使用jdbc对mysql的事务处理,对execute、executeUpdate、executeQuery进行了封装,把繁琐的创建数据库连接对象、PreparedStatement对象、结果集对象,打开关闭连接进行了...
1.通过ODBC使C#能够对MySQL数据进行访问,并可以进行事务处理。 2.通过ODBC使C#能够对Oracle数据进行访问,并可以进行事务处理。 3.文档里面包含了环境配置,软件安装的全过程。最后包含了可执行的数据库连接共同的...
主要介绍了Java实现的mysql事务处理操作,结合实例形式较为详细的分析了Java基于JDBC操作mysql数据库实现事务处理的相关概念、操作技巧与注意事项,需要的朋友可以参考下
JDBC使用MySQL处理大数据+事务控制管理.txt
MYSQL 中有关 事务的一些说明 和 在MYSQL 5.1 版本以上 怎样使用事务
一、Mysql事务概念 MySQL 事务主要用于处理操作量大,复杂度高的数据。由一步或几步数据库操作序列组成逻辑执行单元,这系列操作要么全部执行,要么全部放弃执行。在 MySQL 中只有使用了 Innodb 数据库引擎的...
什么情况适合用存储过程? 当多个用不同语言开发的应用程序或不同平台的应用程序需要去执行相同的数据库操作. (避免为各个程序都开发相同的功能) 安全性要求较高时,使用存储程序和...MySql存储过程与事务处理教学PPT
MySQL事务的处理.docx
mysql 事务处理学习资料,带有示例说明
本文实例讲述了php实现mysql事务处理的方法。分享给大家供大家参考。具体分析如下: 要实现本功能的条件是环境 mysql 5.2 /php 5 支持事务的table 类型,需要InnoDB,有了这些条件你就可以做上面的实现了,这个事物回滚...
MySQL事务处理详细讲解及完整实例下载 ..
MySQL事务处理与并发访问.pdf
mysql事务处理[归类].pdf
这份PDF文档《MySQL事务(五).pdf》是关于MySQL数据库事务管理的深入指南,作为系列教程的第五部分,它详尽地介绍了事务处理的概念、原则以及在实际数据库操作中的应用。内容包括: 事务基础:解释事务的概念和...