当前位置: 首页 / 网站建设 / 正文

MySQL的MVCC、隔离级别、乐观锁与悲观锁的笔记汇总

发布时间:2020-09-16 00:18:08 作者:小超越君


没事在网上瞎逛,发现几篇非常不错的MySQL系列学习笔记,这里就先做个汇总,希望对后来者有帮助。

正确的理解MySQL的MVCC及实现原理

MVCC能解决什么问题,好处是?

数据库并发场景有三种,分别为:

读-读:不存在任何问题,也不需要并发控制
读-写:有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读,幻读,不可重复读
写-写:有线程安全问题,可能会存在更新丢失问题,比如第一类更新丢失,第二类更新丢失

MVCC带来的好处是?

多版本并发控制(MVCC)是一种用来解决读-写冲突的无锁并发控制,也就是为事务分配单向增长的时间戳,为每个修改保存一个版本,版本与事务时间戳关联,读操作只读该事务开始前的数据库的快照。 所以MVCC可以为数据库解决以下问题

在并发读写数据库时,可以做到在读操作时不用阻塞写操作,写操作也不用阻塞读操作,提高了数据库并发读写的性能
同时还可以解决脏读,幻读,不可重复读等事务隔离问题,但不能解决更新丢失问题

小结一下咯

总之,MVCC就是因为大牛们,不满意只让数据库采用悲观锁这样性能不佳的形式去解决读-写冲突问题,而提出的解决方案,所以在数据库中,因为有了MVCC,所以我们可以形成两个组合:

MVCC + 悲观锁

MVCC解决读写冲突,悲观锁解决写写冲突

MVCC + 乐观锁

MVCC解决读写冲突,乐观锁解决写写冲突
这种组合的方式就可以最大程度的提高数据库并发性能,并解决读写冲突,和写写冲突导致的问题

完整版请移步:https://blog.csdn.net/SnailMann/article/details/94724197

正确的理解MySQL的事务和隔离级别

以下是目录
事务的ACID理论
什么是ACID理论?
ACID的四个特性
ACID中C与CAP定理中C的区别?
MySQL事务的隔离级别
事务操作可能会出现的数据问题
事务操作可能出现的更新丢失问题
事务的隔离级别
标准与实现
小结
MySQL SQL命令模拟测试
相关问题
InnoDB的RR级别下其实有部分场景还是会出现不可重复读问题的
InnoDB的RR级别下是如何避免幻读的?
Redis的事务可以实现一致性吗?
完整版请移步:https://blog.csdn.net/SnailMann/article/details/88299127

正确的理解MySQL的乐观锁,悲观锁与MVCC

以下是目录
前提概念
数据库并发的三种场景
乐观锁和悲观锁的澄清
悲观锁
什么是悲观锁?
悲观锁的实现
悲观锁的优点和缺点
乐观锁
什么是乐观锁?
乐观锁的实现
乐观锁的优缺点
MVCC多版本并发控制
什么是MVCC?
总结
乐观锁和悲观锁的抉择
OCC,PCC,MVCC

完整版请移步:https://blog.csdn.net/SnailMann/article/details/88388829

文章转载请保留本文链接:https://www.zhe94.com/782.html

小超越
热爱折腾,曾想着改变世界,如今只能向生活低头,寻找可口的牛奶和面包
添加站长微信作者头像
专注高品质湛江网站建设及湛江SEO优化服务 立即咨询