mysql的事务及并发

mysql的事务及并发

  • 事务的ACID
  • 并发事务的影响

一、事务及其ACID

概念: 事务是一组sql语句组成的逻辑单元。
ACID属性:
1、原子性(Atomicity): 事务是一个原子操作单元,其对数据得分修改,要么全都执行,要么全都不执行。
2、一致性(Consistent): 在事务开始和完成时,数据都必须保持一致状态,这意味着所有相关的数据都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B+树跟双向链表)都是必须是正确的。
3、隔离性(Isolation): 数据库系统提供一定的隔离机制,保证事务不受外部并发操作的影响而独立进行。这意味着事务处理过程中的中间状态对外部是不可见的。
4、持久性(Durable): 事务完成之后,它对数据的修改是永久性的,即使出现系统故障也能保持。

二、并发事务的影响

1、更新丢失
2、脏读
3、不可重复读
4、幻读
1、更新丢失
 当两个事务选中同一行的时候,基于相同的初值更行改行时,由于事务之间不知道其他事务的存在,就会发生更新丢失。,最后的更新,将覆盖其他事务的更新。

2、脏读
 事务A读到了事务B已修改但并未提交的数据,并且在这个数据上进行操作;此时,事务B回滚,就会导致A读取的数据无效,不符合一致性要求。

3、不可重复读(update、delete)
 一个事务在读取某些数据后的某个时间,再次读取以前的数据,发现数据改变了,或者被删除了。,事务A读到了事务B已经提交的修改数据,不符合隔离性。

4、幻读(insert)
 一个事务在第二次查询时,发现了其他事务新增的数据行。

三、对于并发事务的解决方案

脏读: 修改时,加上排他锁;读取时,加上共享锁
不可重复读及更新丢失: 只需对操作的加上行锁
幻读: 只需要数据加上表锁

四、隔离级别

级别脏读不可重复读幻读
未提交读
已提交读
可重复读(默认)
可序列化

1、查看当前数据库的隔离级别

show variables like 'tx_Isolation';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值