知识3-事务隔离级别

  1. 数据库ACID

A 原子性(Atomicity):mysql中用了锁机制来保证了原子性,有悲观锁和乐观锁,悲观锁是锁了整个表或库,锁库时,一般是做数据迁移操作时,而且一般是锁从库,乐观锁的实现分两种,一种是加for update 锁住了行,还有一种是加了版本号来实现

C 一致性(Consistency):mysql用了事务回滚机制,在行记录里,记录了回滚指针和事务id(trx_id),利用了日志文件来进行回滚(undo log)

I 隔离性(Isolation):设置了事务隔离级别,来隔离数据的可见性,在可重复读下,利用MVCC机制

D 持久性(Durability):mysql利用了redo log和bin log来保证了数据不丢失,重启后,可以根据redo log和bin log来恢复数据

  1. mysql的事务隔离级别

1)读未提交,一个事务读到了另一个事务未提交的数据,假如另一个事务回滚,那会使数据错误,这也就是脏读

2)读已提交,一个事务在读取某些数据后的某个时间,再次读取以前读过的数据,却发现其读出的数据已经发生了改变、或某些记录已经被删除了

3)可重复读,这个级别,对大部分场景是没什么问题的,但会产生幻读的情况,比如按相同的查询条件重新读取以前检索过的数据,却发现其他事务插入了满足其查询条件的新数

4)串行化

  1. mysql的锁

mysql的锁,除了刚刚说的悲观锁和乐观锁,还有表锁和行锁,间隙锁,区间锁,而间隙锁是为了能解决幻读产生的问题,但又会影响插入数据的影响,所以,在实际项目中,要综合考虑

  1. MVCC

MVCC是多版本并发控制,这是为了实现可重复读,利用undo log日志版本链,trx_id和roll_pointer这两个隐藏列,生成read view

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值