MySQL 事务笔记

事务

什么是事务

事务是由一个或多个操作构成地单一逻辑工作单元,要么成功,要么失败。

ACID

这是事务的四个特性。

事务满足 ACID:
Atomicity、Consistency、Isolation、Durability。

MySQL 事务的开启与使用

一般,MySQL 都是自动提交事务,即输入命令之后立即提交。这由变量 autocommit 控制,可以通过命令查看

注意:MyISAM 存储引擎并不支持事务,测试时注意。

事务并发问题

脏读

事务 A 执行过程中,对某数据进行了修改,能被事务 B 及时获取到,事务 B 出现脏读;

不可重复读

事务 A 第一次获取某值与第二次某值之间被事务 B 修改了这个值,因此事务 A 不可以重复读取这个值;

幻读

事务 A 检查不存在主键为 1 的记录后意图插入,事务 B 抢先一步插入了主键为 1 的数据,导致事务 A 主键冲突失败;或者取款时,明明看到卡里有余额,却取款失败。

事务隔离级别

READ UNCOMMITED

读未提交,这种隔离级别可以认为没有进行隔离,数据随意共享

set session transaction isolation level read uncommitted;

读未提交可能读取到脏数据,也就是其他事务处理过程中的中间状态。由于读取的值随着其他事务的处理而可能改变,因此也不可重复读,也有可能幻读。

READ COMMITTED

读已提交,进行了一定隔离,但是如果在事务 A 的执行过程中,事务 B 将某个值修改了,并且进行了事务提交,那么 A 可能会在前后读到不同的值,产生不可重复的问题。

REPEATABLE READ

可重复读,MySQL 的默认隔离级别,通过 MVCC 机制实现,MySQL 的可重读一定程度保证了不会出现幻读导致的错误,但是幻读依然存在。

SERIALIZABLE

序列化,已经脱离了并发的事务执行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罐装面包

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值