十一、事务——事务

十一、事务——事务,第1张

提示:文章内容来自《mysql是怎样运行的》以及部分B站宋红康老师的视频,这里仅仅是我的笔记,对重点内容的记录。强烈推荐购买这本书《mysql是怎样运行的》。

文章目录
  • 一、事务
    • 1.1事务的特性:ACID
  • 二、使用事务
    • 2.1 显式事务
    • 2.2 隐式事务


一、事务 1.1事务的特性:ACID

1、原子性:事务是不可分割的基本单位,要么同时成功,要么同时失败
2、一致性:一个事务在执行之前和执行之后,数据库都必须处以一致性状态。
3、隔离性:事务与事务之间是相互隔离的,不互相影响
4、持久性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是 永久性的 ,接下来的其他 *** 作和数据库故障不应该对其有任何影响。持久性是通过 事务日志 来保证的。日志包括了 重做日志 和 回滚日志 。当我们通过事务对数据进行修改的时候,首先会将数据库的变化信息记录到重做日志中,然后再对数据库中对应的行进行修改。这样做的好处是,即使数据库系统崩溃,数据库重启后也能找到没有更新到数据库系统中的重做日志,重新执行,从而使事务具有持

二、使用事务

支持事务的存储引擎:InnoDB,这一是InnoDB与MyISAM的区别

2.1 显式事务
  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
2.2 隐式事务

MySQL中有一个系统变量 autocommit

当然,如果我们想关闭这种 自动提交 的功能,可以使用下边两种方法之一:
显式的的使用 START TRANSACTION 或者 BEGIN 语句开启一个事务。这样在本次事务提交或者回滚前会暂时关闭掉自动提交的功能。
把系统变量 autocommit 的值设置为 OFF ,就像这
SET autocommit = OFF;
或SET autocommit = 0;
① 当我们在一个事务还没提交或者回滚时就又使用 START TRANSACTION 或者 BEGIN 语句开启了另一个事务时,会 隐式的提交 上一个事务。
② 当前的 autocommit 系统变量的值为 OFF ,我们手动把它调为 ON 时,也会 隐式的提交 前边语句所属的事务。
③ 使用 LOCK TABLES 、 UNLOCK TABLES 等关于锁定的语句也会 隐式的提交 前边语句所属的事务。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/758414.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-01
下一篇2022-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存