MYSQL(事务)

一、什么是事务,四大特性

事务:一组操作的集合,它是一个不可分割的单位,事务会将这些操作作为一个整体一起像系统提交,这些操作要么同时成功,要么同时失败

四大特性(ACID)

  • 原子性(Atomicity):事务是一个不可分割的工作单位,事务中的操作要么都成功,要么都失败
  • 一致性(Consistency):事务前后数据的完整性必须保持一致。
  • 隔离性(Isolation):各个事务的操作不受干扰,多个并发事务之间要相互隔离。
  • 持久性(Durability):事务一旦提交,它对数据库中数据的改变就是永久性的

比如,A向B转账500元。

原子性:都成功,或者都失败

一致性:A扣减了500元,B必须增加500元

隔离性:A向B转账的过程中,不受其它事务干扰

持久性:事务提交后,要落盘(持久化)

二、并发事务可能出现的问题 

 脏读:一个事务读到另一个还未提交事务的数据

不可重复读:一个事务先后读取同一个事务两次,得到的数据不一致

幻读:一个事务在查询时没发现该数据,插入时却又发现该事务已存在,类似“幻影”

比如,现在有A、B两个事务

脏读:A修改了一个数据,但是还没有提交。但在并发情况下被B读取了还未提交的数据,也就是“脏数据”,依据脏数据所做的操作可能是不正确的

不可重复读:A查询当前数据后,被B修改了该数据,A重新查询该数据发现两次结果不一致

幻读:A查询一些数据后发现并不存在,同时B插入了一部分数据,在随后的操作中,A发现不该存在的数据突然出现了,就像出现了“幻影”一样。

三、事务隔离级别

Mysql默认隔离级别为:可重复读

读未提交(read uncommitted):解决不了所有问题,一般不用

读已提交(read committed):解决脏读

可重复读 (repetable read):解决脏读和不可重复度

串行化(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、付费专栏及课程。

余额充值