八股文打卡day35——数据库(12)

面试题:讲一下MVCC机制?

我的回答:

MVCC,是多版本并发控制。
什么意思呢?
数据库会记录每条数据记录的变更情况,也就是说,一条数据记录是有多个版本的。
例如,一条数据,是:id=1,用户名为张三,密码为123456。经过多次update语句,密码被更改过多次,那么这个过程中,每一次的更改版本都会被数据库记录一下。
多个版本的数据就构成了一条版本链,通过回滚指针进行链接。
MVCC有三个关键词,分别是:隐藏字段、undo log和read view。
隐藏字段就是说一条数据记录,除了看到的字段比如说id、用户名、密码外,还有其他隐藏的字段,比如说:事务id,是用来标识每个事务的。
undo log是撤销日志,保证了事务的原子性,可以将事务回滚到事务开启之前的状态。
read view是做什么的呢?一条数据记录是有多个版本的,但是反馈给用户的,只能是一个版本。那么选择哪一个版本呢?这个就是read view来决定的。read view通过一套规则,比较当前事务id等来实现版本的选择。

MVCC解决了什么问题呢?
1.读写阻塞的问题。
当一条数据被加了独占写锁。那么之后的带有共享锁或排他锁的其他事务来进行读取数据的时候,就会被阻塞。因为是不兼容的。
MVCC的快照读进行查询时,就是直接返回read view选择的一个版本,不会存在读写阻塞的问题。
2.在RR(可重复读)隔离级别下,一定程度解决了幻读问题。
幻读问题就是在插入一条数据记录时,先查询了一下,发现数据库表中出现了这条记录(其实是被其他事务插入进来的)。
MVCC在RR(可重复读)隔离级别下,每次返回的都是同一个版本的数据,所以不会出现幻读的问题。
但是实质上,幻读问题是被间隙锁和临键锁解决的。

回答时间:2024.03.17

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/751963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

API安全集成最佳实践:有效应对安全挑战

API集成的重要性正愈发凸显。调查数据显示,83%的受访者表示API集成在其业务战略中起着关键作用,约40%的受访者表示企业数字化转型的深入发展是推动API集成的关键推动力。对于现代企业而言,API集成的重要性主要体现在以下方面: 提…

数据结构与算法Bonus-KNN问题的代码求解过程

一、问题提出 (一)要求 1.随机生成>10万个三维点的点云,并以适当方式存储 2.自行实现一个KNN算法,对任意Query点,返回最邻近的K个点 3.不允许使用第三方库(e.g.flann,PCL,opencv)! 4.语言任选(推荐…

ChatGPT编程实现简易聊天工具

ChatGPT编程实现简易聊天工具 今天借助[[小蜜蜂]][https://zglg.work]网站的ChatGPT练习socket编程,实现一个简易聊天工具软件。 环境:Pycharm 2021 系统:Mac OS 向ChatGPT输入如下内容: ChatGPT收到后,根据返回结…

深度学习设计-基于机器学习的心血管疾病分析与预测

概要 在国富民强的今天,医疗卫生事业快速发展,平均人口寿命也逐年上升,随之而来的是人口老龄化问题,而心 血管疾病是近年来发病率极高的老年性疾病。其发病率和死亡率均有所上升,已然成为当今威胁人类健康的重大疾 病之…

配置lvs(DR)

配置lvs(DR) 主机名主机IP地址lvs1lvs192.168.88.38web1nginx192.168.88.10web2nginx192.168.88.20 lvs1上操作 #安装ipvsadm [rootlvs1 ~]# yum -y install ipvsadm [rootlvs1 ~]# ipvsadm -A -t 192.168.88.100:80 -s rr [rootlvs1 ~]# ipvsadm -a -t 192.168.88.100:80 -…

【记录搭建elk 如何在linux共享文件】

『如何在linux共享文件 ,搭建elk直接看第二部分』 新增用户a b c adduser a adduser b adduser c新增用户组 A groupadd developteam将用户a b c 加入 组 usermod -a -G developteam hadoop usermod -a -G developteam hbase usermod -a -G developteam hive设置um…

【学习笔记】云原生的关键技术初步

云原生(Cloud Native)作为云计算领域的一种新型技术体系,旨在提高应用程序的可靠性、性能和响应速度。它通过整合容器、微服务、DevOps等一系列关键技术,使得应用从设计开发到部署上线和运营维护的各个环节都基于云平台构建&#…

【GPT-SOVITS-06】特征工程-HuBert原理

说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…

microk8s使用本地私服registry的镜像http协议

开发环境为了能部署服务到microk8s,我们开启了一个本地私库,地址为:http://localhost:5000,那么如何在microk8s中能拉取本地私库中的镜像呢? 直接部署的话,microk8s会用https协议去拉取镜像,所以必须要配置…

springboot/ssm电子印章管理系统Java印章审批信息管理系统web

springboot/ssm电子印章管理系统Java印章审批信息管理系统web 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:…

Unity游戏项目接广告

Unity游戏项目中接入GoogleAdMob 先看效果图 接入测试横幅广告,代码如下: using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; using System;public class GoogleAdMobManager : MonoBehavi…

面试算法-38-最小覆盖子串

题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。 注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。 如果…

Godot 学习笔记(1):环境配置

文章目录 前言Godot 环境配置相关链接最简单的按钮项目Sence打包最简单的按钮事件 总结 前言 我从小就有个梦想,我想做游戏。虽然我大学的时候选择了计算机,工作也是计算机,但是我一直没有时间去学游戏引擎。原因有二:第一&#…

问题解决:关于tomcat无法连接问题的解决

安装tomcat并配置环境变量 下载tomcat并安装 首先去tomcat官方网站,下载tomcat 进入tomcat官方网站之后,查看jdk应该对应的tomcat版本,点击图示的按钮 点击完毕之后,可以看到下述的页面 图中的表格可以看到对应的jdk版本与tomcat的版本之…

docker基础用法-2

文章目录 什么是dockerOCI&OCFOCIOCF docker架构docker镜像与镜像仓库docker对象安装及使用dockerdocker安装docker加速docker常用操作docker event state防火墙状态及规则 什么是docker docker中的容器: lxc --> libcontainer --> runC docker最开始是…

Qt for Mac阻止MacOS系统休眠

Qt开发的应用程序如果电脑休眠了会影响软件的使用,因此在软件的使用过程中需要防止电脑休眠,在Win上有专门的API进行处理,在Mac上也必需使用Mac平台自身的API,本篇介绍在Mac平台下使用Qt阻止Mac系统休眠。 要调用Mac系统的API&am…

关机恶搞小程序的开发程序

关机恶搞小程序的开发程序 目录 关机恶搞小程序的开发程序 一、引言 二、开发思路 三、代码实现 1. 界面设计 2. 关机动画 3. 关机逻辑 4. 恢复功能 5. 异常处理 四、相关术语解释 一、引言 关机恶搞小程序是一种基于C#语言开发的应用程序,旨在通过一些有…

病毒物种注释:多方案

Blastn比对IMG/VR 下载IMG/VR数据库(见下面的教程) Linux 下载 JGI 的 IMG_VR-CSDN博客 安装Blast(这个太简单了) gunzip IMGVR_all_nucleotides-high_confidence.fna.gz makeblastdb -in img_vr.fasta -dbtype nucl -out img…

如何用Selenium通过Xpath,精准定位到“多个相同属性值以及多个相同元素”中的目标属性值

前言 本文是该专栏的第21篇,后面会持续分享python爬虫干货知识,记得关注。 相信很多同学,都有使用selenium来写爬虫项目或者自动化页面操作项目。同样,也相信很多同学在使用selenium来定位目标元素的时候,或多或少遇见到这样的情况,就是用Xpath定位目标元素的时候,页面…

html5cssjs代码 023 公制计量单位进位与换算表

html5&css&js代码 023 公制计量单位进位与换算表 一、代码二、解释 这段HTML代码定义了一个网页&#xff0c;用于展示公制计量单位的进位与换算表。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"utf-8&quo…