关于Mysql的事务(Transaction)

一.事务介绍

事务(Transaction),一般是指要做的或所做的事情。简单来说,在同一个事务中的事,要么同时执行,要么同时失败,是一个不可分割的工作单位。例如银行转账,转钱账户转出金钱,同时收钱账户收入金钱,只能同时成功;不能一个操作进行了,另外的操作没有进行。

二.事务的四大特征

事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。比如B给A转钱的同时C给A转钱,这是俩个事务,不能相互影响,要做到互不干扰。

三.事务在Mysql中的执行过程

在Mysql数据库中,事务是默认开启提交的,所以应该先关闭事务的自动提交

set autocommit = 0; --关闭自动提交
start transaction   --开启事务
   --要执行的操作1
   --要执行的操作2
   --...
commit--提交事务
rollback--回滚事务
set autocommit = 1;  --恢复自动提交

注意:提交事务和回滚事务只能同时完成一个,不能同时进行,如图所示
事务提交流程

总结

1.同一个事务中,要么同时执行,要么同时失败,是一个不可分割的工作单位。
2.提交事务和回滚事务都可以结束事务。
3.Mysql默认开启自动提交,要先关闭自动提交,再开启事务。先将autocommit置为0来关闭自动提交,然后开启事务,结束事务后,将autocommit置为1来开启自动提交,恢复数据库默认值。

发布了23 篇原创文章 · 获赞 43 · 访问量 1399

猜你喜欢

转载自blog.csdn.net/qq_41256881/article/details/105175015