mysql中隔离级别的实现即事务的实现

参考:https://blog.csdn.net/J_java1/article/details/82025189

数据库对于隔离级别的实现就是使用并发控制机制对在同一时间执行的事务进行控制,限制不同的事务对于同一资源的访问和更新。

并发控制机制三大金刚:

1、不会将整个数据库都加锁,而是只会锁住那些需要访问的数据项。

2、分为共享锁(Shared)和互斥锁(Exclusive),前者也叫读锁,后者叫写锁。

3、读锁保证了读操作可以并发执行,写锁保证了在更新数据库数据时不会有其他的事务访问或者更改同一条记录。

时间戳

1、通过时间戳,为每一条记录保留两个字段读时间戳和写时间戳。

2、读时间戳中记录了所有访问该记录的事务中的最大时间戳,而记录行的写时间戳中保存了将记录改到当前值的事务的时间戳。

3、往往都会使用乐观锁,先对数据进行修改,在写回时再去判断当前值,也就是时间戳是否改变过,如果没有改变过,就写入,否则,生成一个新的时间戳并再次更新数据。

多版本和快照隔离

1、通过维护多个版本的数据,数据库可以允许事务在数据被其他事务更新时对旧版本的数据进行读取。

2、因为所有的读操作不再需要等待写锁的释放,所以能够显著地提升读的性能。

3、Mysql使用MVCC,通过使用回滚日志实现MVCC。保证事务并行执行时能够不等待互斥锁的释放直接获取数据。

 

回滚日志:

1、想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行回滚,而在 MySQL 中,恢复机制是通过回滚日志(undo log)实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后在对数据库中的对应行进行写入。

2、回滚日志并不能将数据库物理地恢复到执行语句或者事务之前的样子;它是逻辑日志,当回滚日志被使用时,它只会按照日志逻辑地将数据库中的修改撤销掉看,可以理解为,我们在事务中使用的每一条 INSERT 都对应了一条 DELETE,每一条 UPDATE 也都对应一条相反的 UPDATE 语句。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值