重庆oracle认证培训机构

新闻分类

产品分类

热门关键词

联系我们

企业名称:重庆赛烽达科技有限公司

联系人:程老师

手机:13372708242

邮箱:xqzhang@saifengda.com

网址:www.cqora.com

地址:重庆石桥铺高创锦业17-3

MySQL MVCC学习介绍

您的当前位置: 首 页 >> 新闻资讯 >> 行业新闻

MySQL MVCC学习介绍

发布日期:2021-02-17 作者: 点击:

MySQL  MVCC学习介绍

MySQL

什么是MVCC

什么是当前读取和快照读取?

当前读取、快照读取和MVCC之间的关系

MVCC实施原则

隐式字段

撤消日志

阅读视图(阅读视图)

整个过程

与MVCC有关的问题

RR如何在RC水平的基础上解决不可重复读取的问题?

在RC和RR级别下InnoDB快照读取有什么区别?

一、房地概述

什么是MVCC?

多版本并发控制

MVCC,多版本并发控制的全称,是多版本并发控制。MVCC是一种并发控制方法。一般在数据库管理系统中,用编程语言实现对数据库和事务内存的并发访问。

MySQL  InnoDB中MVCC的主要目的是提高高数数据库的并发性能,以更好的方式处理读写冲突,这样即使有读写冲突,也可以同时读取,不需要锁定和阻塞

什么是当前读取和快照读取?

在学习MVCC多版本并发控制之前,首先要了解MySQL  InnoDB下什么是当前读取和快照读取。

当前读数

选择锁定共享模式,选择更新;更新、插入、删除(排他锁)都是当前读取。为什么它们被称为当前读取?也就是说,它读取记录的最新版本。读取时,必须确保其他并发事务不能修改当前记录并锁定读取的记录。

快照读取

与未锁定的选择操作一样,它是快照读取,即未锁定的非阻塞读取;快照读取的前提是隔离级不是串行级,串行级下的快照读取会退化为电流读取;发生快照读取的原因是基于提高并发性能的考虑。快照读取的实现是基于多版本并发控制的,也就是MVCC,可以认为是行锁的变体,但是很多情况下避免了锁操作,降低了开销;因为它基于多个版本,所以快照读取不一定是数据的最新版本,而可能是以前的版本历史

说白了,MVCC是实现读写冲突不锁,这个读指的是快照读,不是当前读,实际上是一个锁操作,是悲观锁的实现

当前读取、快照读取和MVCC之间的关系

准确地说,MVCC多版本并发控制指的是“维护一个数据的多个版本,以便在读和写操作之间没有冲突”的概念。这只是一个理想的概念

在MySQL中,要实现MVCC这样一个理想的概念,需要MySQL提供具体的功能来实现,快照读取是MySQL实现MVCC理想模式的具体非阻塞读取功能之一。相对而言,当前阅读是悲观锁的具体功能实现

说得详细一点,快照阅读本身也是一个抽象的概念,需要进一步研究。MySQL中MVCC模型的具体实现由三个隐式字段完成,撤销日志、读视图等。有关详细信息,请参见以下MVCC实施原则

MVCC能解决什么问题?有什么优势?

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

读-读:没有问题,不需要并发控制

读写:cable进程存在安全问题,可能导致事务隔离问题,可能会遇到脏读、幻读、不可重复读

写入-写入:由于电缆安全问题,可能会出现更新丢失问题,例如第一种类型的更新丢失和第二种类型的更新丢失

MVCC有什么好处?

多版本并发控制(MVCC)是一种用于解决读写冲突的无锁并发控制,即向事务分配一个单向递增的时间戳,为每次修改保存一个版本,版本与事务时间戳相关联。读取操作仅在事务开始之前读取数据库的快照。因此,MVCC可以为数据库解决以下问题

当同时读取和写入数据库时,可以在不阻塞写操作和写操作的情况下完成,这提高了同时读取和写入数据库的性能

同时也可以解决脏读、幻读、不可重复读等事务隔离问题,但不能解决更新丢失问题


本文网址:http://www.cqora.com/news/771.html

关键词:MySQL培训,MySQL培训班,MySQL培训学校

最近浏览:

报名咨询

点击咨询报名

赛烽达QQ群

赛烽达技术群

程老师

13372708242

加微信咨询

张老师微信.jpg

xqzhang@saifengda.com