MySQL事务隔离级别测试实例


数据库使用系列专栏:数据库使用系列文章


前面介绍了数据库事务的概念及其实现原理,为了提升系统的并发性能SQL标准定义了不同的事务隔离级别,从低到高依次是:

  • 读未提交(READ UNCOMMITTED)
  • 读已提交(READ COMMITTED)
  • 可重复读(REPEATABLE READ)
  • 串行化(SERIALIZABLE)

不同隔离级别可能导致的并发异常:

事务隔离级别可能导致的并发异常
脏读不可重复读幻读
读未提交(read-uncommitted)可能可能可能
不可重复读(read-committed) 可能可能
可重复读(repeatable-read)  可能
串行化(serializable)   

本文针对不同的隔离级别进行测试,以MySQL InnoDB存储引擎(默认事务级别可重复读,可重复读级别InnoDB引擎通过加锁设计已消除幻读可能)为例。

1 读未提交(read uncommitted)

2 读已提交(read committed)

3 可重复读(repeatable read)

4 串行化(serializable)

系统并行性能差,数据操作只能串行:不同事务读取可以同时操作(共享读),但不能增删改。

补充:不可重复读和幻读区别

1、不可重复读针对确定的某一行数据,幻读针对不确定的多行数据;

2、解决不可重复读加锁时只需要添加行级锁,解决幻读加锁需要添加表级锁。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值