MySQL的四种事务隔离级别

数据库事务的四大特性(ACID)

  1. 原子性(Atomicity):所有操作要么全部成功,要么全部失败;
  2. 一致性(Consistency):数据库从一个一致性状态变换到另一个一致性状态;
  3. 隔离性(Isolation):当多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间相互隔离;(四种事务隔离级别)
  4. 持久性(Durability):事务一旦提交,那么对数据库中数据的改变就是永久的;

如果事务之间不是相互隔离,可能出现的以下一些问题:

  1. 脏读:一个事务再处理过程中读取了另一个事务未提交的数据;
  2. 不可重复读:一个事务范围内,多次查询某个数据,却得到不同的结果(事务T1读取某一个数据,事务T2修改了该数据并提交,T1对读取的数据进行检验而再次读取时得到与之前不同的结果);
  3. 幻读:事务在操作过程中进行两次查询,第二次查询结果包含了第一次查询中未出现的数据或缺少了第一次查询的数据(事务T1将数据库某个表的某个字段所有为1的值改为2,事务T2插入一条值为1的数据并提交到数据库,而事务T1再次查询时就会发现还有一行没有修改,其实这行数据时事务T2添加的,就好像产生幻觉一样,这就时幻读);

MySQL为我们提供了四种事务隔离级别:

  1. 串行化:提供严格事务隔离,要求事务序列化执行,事务只能一个一个地执行,不能并发执行;可防止脏读、不可重复读、幻读;
  2. 可重复读:以操作一行数据为前提,读事务禁止其他写事务(但允许其他读事务),未提交的写事务禁止其他读事务和写事务;可防止脏读、不可重复读;可能出现幻读;
  3. 读已提交:以操作一行数据为前提,读事务允许其他读写事务,未提交的写事务禁止其他读写事务;可防止脏读;可能出现不可重复读、幻读;
  4. 读未提交:以操作一行数据为前提,读事务允许其他读写事务,未提交的写事务禁止其他写事务,允许其他读事务;任何情况都无法保证;

更详细的文章:https://tech.meituan.com/2014/08/20/innodb-lock.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值