加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL事务,这篇文章就够了

发布时间:2019-11-04 16:44:09 所属栏目:MySql教程 来源:欧阳思海
导读:副标题#e# 0 什么是事务 事务(Transaction) 是并发控制的基本单位。所谓的事务,它是一个操作序列,这些操作要么都 执行,要么都不执行,它是一个不可分割的工作单位。事务是数据库维护数据一致性的单位,在每 个事务结束时,都能保持数据一致性。 同时,

还是这个例子,但是对于链事务来说,是不能直接rollback到保存点t1的,最能恢复到最近的一个保存点t2;另外我们需要注意,链事务在执行commit后就会释放当前事务所持有的所有锁,而带有保存点的扁平事务不会影响所持有的锁。

嵌套事务

在事务中再嵌套事务,这种结构有点像一颗横着的树的结构,位于根节点的事务称为顶层事务。事务的前驱称为父事务,其它事务称为子事务。事务的前驱称为父事务,事务的下一层称为子事务。

子事务既可以提交也可以回滚,但是它的提交操作并不马上生效,除非由其父事务提交。因此就可以确定,任何子事务都在顶层事务提交后才真正的被提交了。同理,任意一个事务的回滚都会引起它的所有子事务一同回滚。

MySQL事务,这篇文章就够了

  1. BEGIN WORK  
  2.      SubTransaction1:  
  3.              BEGIN WORK  
  4.                  SubOperationX  
  5.              COMMIT WORK  
  6.      SubTransaction2:  
  7.              BEGIN WORK  
  8.                  SubOperationY  
  9.              COMMIT WORK  
  10.      ...  
  11.      SubTransactionN:  
  12.              BEGIN WORK  
  13.                  SubOperationN  
  14.              COMMIT WORK  
  15. COMMIT WORK 

分布式事务

分布式事务通常是指在一个分布式环境下运行的扁平事务,因此需要根据数据所在位置访问网络中的不同节点。

在不同的物理地址,通过网络访问,执行不同的事务,这就是分布式事务。

3 事务的使用

首先这一部分我们还是先介绍一下这些事务的语句,也不是很多,使用也不复杂,下面用一个表格做一个整理。

MySQL事务,这篇文章就够了

注意:COMMIT和COMMIT WORK语句不同之处在于COMMIT WORK用来控制事务结束后的行为是CHAIN还是RELEASE,如果是CHAIN,那么事务就是链事务。

用户可以通过参数completion_type控制,如下:

MySQL事务,这篇文章就够了

  •  completion_type = 1 实例

执行下面的操作;

  1. SET @@completion_type = 1;  
  2. BEGIN WORK;  
  3. INSERT INTO lock_test SELECT 10;  
  4. COMMIT WORK; 

接着我们再执行下面的操作;

  1. INSERT INTO lock_test SELECT 115;  
  2. ROLLBACK;  
  3.  SELECT * FROM lock_test; 

我们先插入一条数据115,然后再回滚,我们知道如果不是在一个事务的时候,115应该是会插入成功的,就算我们回滚了,但是,这里我们回滚之后,查询结果如下:

MySQL事务,这篇文章就够了

这个时候并没有115这条记录,也就是回滚生效了,说明在COMMIT WORK之后,又是一个新的事务,所以才会出现这样的结果。

  •  completion_type = 2 实例

我们先进行下面的操作;

  1. SET @@completion_type = 2;  
  2. BEGIN WORK;  
  3. INSERT INTO lock_test SELECT 5;  
  4. COMMIT WORK; 

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读