当前位置: 首页 > news >正文

面试数据库八股文十问十答第七期

面试数据库八股文十问十答第七期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)索引是越多越好吗?

不是的。虽然索引可以加快数据的检索速度,但是索引也会增加数据库的存储空间和维护成本。过多的索引会增加写操作的开销,因为每次对数据进行修改时都需要更新索引。此外,索引还会增加查询优化器的选择成本,并且在某些情况下,过多的索引可能会导致性能下降,因为查询优化器可能会选择错误的索引。因此,建立索引需要根据实际的查询需求和数据库的特点来进行权衡和选择。

2)你能说说在 B+ 树层面查询数据的全过程吗?越详细越好

B+ 树是一种常用于数据库索引结构的数据结构,其查询数据的全过程可以分为以下几个步骤:

  1. 根据查询条件在根节点进行查找:从根节点开始,根据查询条件找到对应的索引键或者索引范围。
  2. 根据索引键或者范围找到对应的叶子节点:在非叶子节点中,根据索引键的值找到对应的子节点,直到达到叶子节点。叶子节点保存了数据行的指针或者数据页的地址。
  3. 在叶子节点中进行查找:在叶子节点中根据索引键的值找到对应的数据行的指针或者数据页的地址。
  4. 如果需要,进行回表操作:如果查询的列不在索引中,需要根据数据行的指针或者数据页的地址到数据页中获取数据。

3)为什么要用 B+ 树?

B+ 树作为一种常用的索引结构,在数据库系统中有着广泛的应用,主要有以下几个原因:

  • 平衡性:B+ 树是一种平衡树结构,保证了树的高度较低,从而保证了在最坏情况下的查询、插入和删除操作的时间复杂度为 O(logN)。
  • 有序性:B+ 树的叶子节点构成了有序的链表,这样可以很方便地进行范围查询和范围扫描。
  • 可扩展性:B+ 树支持动态的插入和删除操作,同时保持树的平衡性,使得数据库系统能够动态地适应数据的变化。
  • 适应性:B+ 树适用于磁盘存储,可以很好地利用磁盘的预读特性,减少磁盘IO操作,提高查询性能。
  • 支持多种操作:B+ 树不仅支持等值查询,还支持范围查询、范围扫描等多种操作,可以满足数据库系统中各种复杂的查询需求。

4)MySQL 是如何实现事务的

MySQL 使用了多种技术来实现事务的支持,其中最重要的是以下两种:

  • 事务日志(Redo Log):MySQL 使用事务日志来保证事务的持久性。在事务提交之前,将事务的修改操作记录到事务日志中,然后再将这些修改写入到磁盘上的数据页中。在数据库发生崩溃或者重新启动时,MySQL 可以通过重放事务日志来恢复未完成的事务,保证事务的持久性。
  • Undo Log:MySQL 使用 Undo Log 来支持事务的回滚和 MVCC。在事务执行过程中,将事务的修改操作记录到 Undo Log 中,然后再将这些修改写入到磁盘上的数据页中。如果事务需要回滚,可以通过 Undo Log 将数据恢复到事务开始之前的状态。

除了以上两种技术之外,MySQL 还使用了锁机制来保证事务的并发控制。通过对数据行、索引、表等级别的锁来控制并发事务的访问,保证事务的隔离性和一致性。

5)MySQL 长事务会造成什么问题?

长事务可能会导致以下几个问题:

  • 锁资源占用:长事务持有的锁资源会长时间占用,导致其他事务无法访问或修改相关数据,从而降低数据库的并发性能。
  • 内存占用增加:长事务中的未提交数据需要占用 Undo Log,长时间运行的事务会增加 Undo Log 的使用量,占用大量内存空间,导致内存压力增加。
  • 版本链增长:长事务持续修改数据会生成大量的版本链,增加数据库的存储空间和维护成本。
  • 数据一致性问题:长事务可能会导致数据库中出现脏数据或者不一致的数据,影响数据库的一致性和可靠性。

因此,为了避免以上问题,应尽量避免设计长时间运行的事务,或者将长事务拆分成多个短事务,减少事务持有锁资源和占用内存空间的时间。

6)什么是 MVCC?

MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于实现数据库的并发控制的技术。在 MVCC 中,每个事务在读取数据时会看到一个固定版本的数据,并且事务之间的修改操作不会互相影响。

MVCC 的主要思想是为每个事务创建一个可见性视图,该视图定义了事务可以看到哪些数据版本。当事务开始时,MVCC 会为该事务创建一个时间戳,并在事务执行过程中使用该时间戳来确定事务可以看到的数据版本。当事务提交或者回滚时,MVCC 会更新事务的时间戳,并清理过期的数据版本。

MVCC 可以提高数据库的并发性能,减少事务之间的互相干扰,同时也能够提高数据库的可靠性和一致性。MySQL 中的 InnoDB 存储引擎就使用了 MVCC 技术来支持事务的并发控制。

7)如果没有 MVCC 怎么办?

如果没有 MVCC,数据库可以使用其他并发控制技术来确保事务的隔离性和一致性,例如使用锁来控制并发访问。在没有 MVCC 的情况下,数据库可能会采用更加保守的锁机制,例如在读取数据时对数据行进行加锁,以防止其他事务对数据进行修改。

8)MySQL 有几种事务隔离级别?

MySQL 支持以下四种事务隔离级别:

  1. 读未提交(Read Uncommitted):事务可以读取其他事务未提交的数据。这是最低级别的隔离级别,可能会导致脏读、不可重复读和幻读的问题。
  2. 读提交(Read Committed):事务只能读取其他事务已经提交的数据。这是 MySQL 的默认隔离级别。
  3. 可重复读(Repeatable Read):事务在整个事务期间可以多次读取相同的数据,并且保证这些数据不会发生变化。这可以防止不可重复读问题,但仍然可能发生幻读问题。
  4. 串行化(Serializable):最高级别的隔离级别,确保事务串行执行,以避免任何并发问题。虽然可以避免脏读、不可重复读和幻读问题,但会降低数据库的并发性能。

9)MySQL 的默认事务隔离级别是什么?为什么?

MySQL 的默认事务隔离级别是 读提交(Read Committed)。这个隔离级别提供了一种良好的平衡,既可以避免脏读问题,又能够在大多数情况下保证较好的并发性能。

10)脏读、不可重复读、幻读分别是什么?

  • 脏读(Dirty Read):一个事务读取了另一个事务未提交的数据。如果另一个事务回滚,那么读取的数据就是无效的。
  • 不可重复读(Non-Repeatable Read):一个事务内多次读取同一数据,但是由于其他事务的修改,每次读取的数据可能都不一样。这种情况下,事务读取的数据是不一致的。
  • 幻读(Phantom Read):一个事务在读取某个范围的数据时,另一个事务插入了新的数据行,导致第一个事务再次读取该范围时,发现数据行的数量或者内容发生了变化。这种情况下,事务读取的数据不符合预期,就像出现了幻觉一样。

这些问题在并发环境下可能会出现,而不同的事务隔离级别决定了数据库如何处理这些问题。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

前后端总计已经 1300+ Star,2W+ 访问!

⭐点赞⭐收藏⭐不迷路!⭐

相关文章:

面试数据库八股文十问十答第七期

面试数据库八股文十问十答第七期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)索引是越多越好吗&#xff…...

【C++题解】1133. 字符串的反码

问题:1133. 字符串的反码 类型:字符串 题目描述: 一个二进制数,将其每一位取反,称之为这个数的反码。下面我们定义一个字符的反码。 如果这是一个小写字符,则它和字符 a 的距离与它的反码和字符 z 的距离…...

【Python编程实战】基于Python语言实现学生信息管理系统

🎩 欢迎来到技术探索的奇幻世界👨‍💻 📜 个人主页:一伦明悦-CSDN博客 ✍🏻 作者简介: C软件开发、Python机器学习爱好者 🗣️ 互动与支持:💬评论 &…...

AI网络爬虫:批量爬取电视猫上面的《庆余年》分集剧情

电视猫上面有《庆余年》分集剧情&#xff0c;如何批量爬取下来呢&#xff1f; 先找到每集的链接地址&#xff0c;都在这个class"epipage clear"的div标签里面的li标签下面的a标签里面&#xff1a; <a href"/drama/Yy0wHDA/episode">1</a> 这个…...

md5强弱碰撞

一&#xff0c;类型。 1.弱比较 php中的""和""在进行比较时&#xff0c;数字和字符串比较或者涉及到数字内容的字符串&#xff0c;则字符串会被转换为数值并且比较按照数值来进行。按照此理&#xff0c;我们可以上传md5编码后是0e的字符串&#xff0c;在…...

【Docker故障处理篇】运行容器报错“docker: failed to register layer...file exists.”解决方法

【Docker故障处理篇】运行容器报错“docker: failed to register layer...file exists.” 一、Docker环境介绍2.1 本次环境介绍2.2 本次实践介绍二、故障现象2.1 运行容器消失2.2 重新运行容器报错三、故障分析四、故障处理4.1 停止 Docker 服务:4.2 备份重要数据4.3 清理冲突…...

小红书-社区搜索部 (NLP、CV算法实习生) 一面面经

😄 整个流程按如下问题展开,用时60min左右面试官人挺好,前半部分问问题,后半部分coding一道题。 各位有什么问题可以直接评论区留言,24小时内必回信息,放心~ 文章目录 1、自我介绍2、介绍下项目:微信-多模态小视频分类2.1、看你用了cross-att来融合多模态信息,cross…...

解读makefile中的.PHONY

在 Makefile 中&#xff0c;.PHONY 是一个特殊的目标&#xff0c;用于声明伪目标&#xff08;phony target&#xff09;。伪目标是指并不代表实际构建结果的目标&#xff0c;而是用来触发特定动作或命令的标识。通常情况下&#xff0c;.PHONY 会被用来声明一组需要执行的动作&a…...

linux配置防火墙端口

配置防火墙&#xff0c;添加或删除端口&#xff0c;需要有root权限。 防火墙常用命令如下&#xff1a; 1.查看防火墙状态&#xff1a; systemctl status firewalld active(running)&#xff1a;开启状态&#xff0c;正在运行中 inactive(dead)&#xff1a;关闭状态&#xff…...

sklearn线性回归--岭回归

sklearn线性回归--岭回归 岭回归也是一种用于回归的线性模型&#xff0c;因此它的预测公式与普通最小二乘法相同。但在岭回归中&#xff0c;对系数&#xff08;w&#xff09;的选择不仅要在训练数据上得到好的预测结果&#xff0c;而且还要拟合附加约束&#xff0c;使系数尽量小…...

三十一、openlayers官网示例Draw Features解析——在地图上自定义绘制点、线、多边形、圆形并获取图形数据

官网demo地址&#xff1a; Draw Features 先初始化地图&#xff0c;准备一个空的矢量图层&#xff0c;用于显示绘制的图形。 initLayers() {const raster new TileLayer({source: new XYZ({url: "https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/…...

医疗科技:UWB模块为智能医疗设备带来的变革

随着医疗科技的不断发展和人们健康意识的提高&#xff0c;智能医疗设备的应用越来越广泛。超宽带&#xff08;UWB&#xff09;技术作为一种新兴的定位技术&#xff0c;正在引领着智能医疗设备的变革。UWB模块作为UWB技术的核心组成部分&#xff0c;在智能医疗设备中发挥着越来越…...

Java面试题大全(从基础到框架,中间件,持续更新~~~)

从Java基础到数据库&#xff0c;Spring&#xff0c;MyBatis&#xff0c;消息中间件&#xff0c;微服务解决全部Java面试过程中的问题。&#xff08;持续更新~~&#xff09; Java基础 2024最新Java面试题——java基础 MySQL基础 mysql基础知识——适合不太熟悉数据库知识的小…...

零知识证明在隐私保护和身份验证中的应用

PrimiHub一款由密码学专家团队打造的开源隐私计算平台&#xff0c;专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 隐私保护和身份验证是现代社会中的关键问题&#xff0c;尤其是在数字化时代。零知识证明&#xff08;Zero-Knowledge Proofs&…...

15.微信小程序之async-validator 基本使用

async-validator是一个基于 JavaScript 的表单验证库&#xff0c;支持异步验证规则和自定义验证规则 主流的 UI 组件库 Ant-design 和 Element中的表单验证都是基于 async-validator 使用 async-validator 可以方便地构建表单验证逻辑&#xff0c;使得错误提示信息更加友好和…...

元宇宙vr科普馆场景制作引领行业潮流

在这个数字化高速发展的时代&#xff0c;北京3D元宇宙场景在线制作以其独特的优势&#xff0c;成为了行业内的创新引领者。它能够快速完成空间设计&#xff0c;根据您的个性化需求&#xff0c;轻松设置布局、灯光、音效以及互动元素等&#xff0c;为您打造出一个更加真实、丰富…...

kotlin基础之高阶函数

Kotlin中的高阶函数、内联函数以及noinline和crossinline关键字是函数式编程中的重要概念。下面我将逐一解释这些概念的定义、实现原理、使用场景以及noinline和crossinline关键字的具体用法。 高阶函数 定义&#xff1a;高阶函数是接受一个或多个函数作为参数&#xff0c;或…...

【Python音视频技术】用moviepy实现图文成片功能

今天上班的时候看到有人群里问 图文成片怎么实现。 临时给我提供一点写作的灵感&#xff0c;趁着下班写一篇。这里用到 python的moviepy库&#xff0c; 之前文章介绍过。 大体思路&#xff1a;假定有4张图片&#xff0c;每张图片将在视频中展示2秒钟&#xff0c;并且图片会按照…...

【Linux】权限的理解之权限掩码(umask)

目录 前言 一、利用八进制数值表示文件或目录的权限属性 二、系统默认的权限掩码和权限掩码的作用原理 三、分析权限掩码改变文件或目录的权限属性 前言 权限掩码是由4个数字组合而成的&#xff0c;默认的第一位数字是0&#xff1b;后三位数字分别由八进制位数字组成。权限…...

UVa1466/LA4849 String Phone

UVa1466/LA4849 String Phone 题目链接题意分析AC 代码 题目链接 本题是2010年icpc亚洲区域赛大田赛区的G题 题意 平面网格上有n&#xff08;n≤3000&#xff09;个单元格&#xff0c;各代表一个重要的建筑物。为了保证建筑物的安全&#xff0c;警察署给每个建筑物派了一名警察…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

【WebSocket】SpringBoot项目中使用WebSocket

1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖&#xff0c;添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...

ArcGIS Pro+ArcGIS给你的地图加上北回归线!

今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等&#xff0c;设置经线、纬线都以10间隔显示。 2、需要插入背会归线&#xf…...

旋量理论:刚体运动的几何描述与机器人应用

旋量理论为描述刚体在三维空间中的运动提供了强大而优雅的数学框架。与传统的欧拉角或方向余弦矩阵相比&#xff0c;旋量理论通过螺旋运动的概念统一了旋转和平移&#xff0c;在机器人学、计算机图形学和多体动力学领域具有显著优势。这种描述不仅几何直观&#xff0c;而且计算…...