Mysql——事务隔离级别

【MySQL 中,事务支持是在引擎层实现的】

数据库事务的隔离级别:

  1. 读取未提交:一个事务还没提交时,它做的变更就能被别的事务看到。会造成脏读,幻读和不可重复读。
  2. 读取已提交:推荐 & 默认 的隔离方式,一个事务提交后,它做的变更才能被别的事务看到。可以避免脏读,但是无法解决不可重复读和幻读。
  3. 重复读:事务读取出某一条数据的时候,就会对该数据加锁,其他事务不可以修改该数据。可以解决脏读和不可重复读的问题。但是还是会出现幻读的情况。【InnoDB 的默认事务隔离级别是可重复读】
  4. 串行化:最安全的SERIALIZBLE,事务一个一个执行,可以解决所有问题,但是会影响并发的效率。

脏读:读取到其他事务未提交的数据。

幻读:仅专指“新插入的行,只会出现在“当前读”的情况下详情

可重复读:事务在执行期间看到的数据前后必须是一致的;

在实现上,数据库里面会创建一个视图,访问的时候以视图的逻辑结果为准。

  • 在“可重复读”隔离级别下,这个视图是在事务启动时创建的,整个事务存在期间都用这个视图。
  • 在“读提交”隔离级别下,这个视图是在每个 SQL 语句开始执行的时候创建的。
  • 在“读未提交”隔离级别下直接返回记录上的最新值,没有视图概念;
  • 在“串行化”隔离级别下直接用加锁的方式来避免并行访问。

查看当前数据库的事务隔离级别的方式:

SELECT @@tx_isolation;

设置数据库的隔离级别:

set session transaction isolation level read uncommitted;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值