【Mysql篇】Mysql的隔离级别,以及存在的并发事务问题

Mysql的隔离级别,以及存在的并发事务问题

1. 数据库在并发情况下的常见操作

1. 读-读

不存在任何问题,也不需要并发控制

2. 读-写

有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读不可重复读幻读

3. 写-写

有线程安全问题,可能会存在更新丢失问题

2. Mysql的隔离级别以及解决的问题

1. READ-UNCOMMITTED(读未提交)

可能导致的问题:脏读
解决:用行锁,隔离级别升级,读已提交或以上

2. READ-COMMITTED(读已提交)

可能导致的问题:不可重复读
解决:隔离级别升级,升级到可重复读或以上

3. REPEATABLE-READ(可重复读,默认隔离级别)

可能导致的问题:幻读

有疑问:有人说,在innodb存储引擎下,默认开启间隙锁,是能解决幻读的问题的

解决:隔离级别升级,升级到串行化

定义:可重复读指的是在一个事务里,我两次select查询到的数据应该是一样的

4. SERIALIZABLE(串行化)

可避免幻读。读加共享锁,写加排他锁。这样读取事务可以并发,但是读写,写写事务之间都是互斥的

3. 问:不可重复读和幻读的区别是什么?

维度不同,不可重复读是针对某个数据来说的,幻读针对某一行来说的

  • 不可重复读侧重于update这种操作,同一条数据前后读起来不一样的情况,
  • 幻读侧重于insertdelete这种操作,前后两次select 数据的数量会发生变化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值