
文章目录提示:文章内容来自《mysql是怎样运行的》以及部分B站宋红康老师的视频,这里仅仅是我的笔记,对重点内容的记录。强烈推荐购买这本书《mysql是怎样运行的》。
- 一、事务
- 1.1事务的特性:ACID
- 二、使用事务
- 2.1 显式事务
- 2.2 隐式事务
一、事务 1.1事务的特性:ACID
1、原子性:事务是不可分割的基本单位,要么同时成功,要么同时失败
2、一致性:一个事务在执行之前和执行之后,数据库都必须处以一致性状态。
3、隔离性:事务与事务之间是相互隔离的,不互相影响
4、持久性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是 永久性的 ,接下来的其他 *** 作和数据库故障不应该对其有任何影响。持久性是通过 事务日志 来保证的。日志包括了 重做日志 和 回滚日志 。当我们通过事务对数据进行修改的时候,首先会将数据库的变化信息记录到重做日志中,然后再对数据库中对应的行进行修改。这样做的好处是,即使数据库系统崩溃,数据库重启后也能找到没有更新到数据库系统中的重做日志,重新执行,从而使事务具有持
支持事务的存储引擎:InnoDB,这一是InnoDB与MyISAM的区别
2.1 显式事务- 开启:在写业务sql前,通过这两个显式的开启事务
方法1:BEBIN
方法2:START TRANSACTION
START TRANASACTION和BEGIN不同的是,它后面可以跟这些
READ ONLY:标志当前事务是一个只读事务,也就是说该事务的数据库 *** 作只能读取,不能修改数据
(其实事务是不允许修改那些其他事务也能访问的的表中的数据。对于临时表( CRAETE TRMPORY TABLE ) 来说,由于它们只能在当前会话中可见,所以只读事务可以对临时表进行增删改 *** 作
READ WRITE:标志当前事务是一个读写事务,也就是属于该数据库的事务 *** 作,既可以读数据,也可以修改数据
WITH CONSISTENY SNAPSHOT:启动一致性读
如果我们想要开启一个只读事务:
START TRANSACTION READ ONLY
也可以跟多个修饰符,通过逗号隔开
START TRANSACTION READ ONLY , WITH CONSISTENY SNAPSHOT :开启一个只读和一致性读的事务
2)提交事务:
COMMIT
3)手动终止事务
ROLLBACK
4)保存点 SAVEPOINT:就是在事务对应的数据库语句中,打几个点,我们子调用ROLLBACK时可以指定回滚到哪个点
SAVEPOINT s1
.。。。
ROLLBACK TO s1
MySQL中有一个系统变量 autocommit
当然,如果我们想关闭这种 自动提交 的功能,可以使用下边两种方法之一:
显式的的使用 START TRANSACTION 或者 BEGIN 语句开启一个事务。这样在本次事务提交或者回滚前会暂时关闭掉自动提交的功能。
把系统变量 autocommit 的值设置为 OFF ,就像这
SET autocommit = OFF;
或SET autocommit = 0;
① 当我们在一个事务还没提交或者回滚时就又使用 START TRANSACTION 或者 BEGIN 语句开启了另一个事务时,会 隐式的提交 上一个事务。
② 当前的 autocommit 系统变量的值为 OFF ,我们手动把它调为 ON 时,也会 隐式的提交 前边语句所属的事务。
③ 使用 LOCK TABLES 、 UNLOCK TABLES 等关于锁定的语句也会 隐式的提交 前边语句所属的事务。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)