常见的MySQL数据库面试题

news2024/10/3 0:24:12

前言

作者:小蜗牛向前冲

名言:我可以接受失败,但我不能接受放弃

  如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正

总结一下mysql中常见的面试题 

1、MySQL中的索引知道吗?能讲讲索引有哪些种类吗?都有什么用

 答:

mysql中的索引他能提高数据库的查询速度,我们为数据表中的特点列创建数据结构(这InnoDB存储引擎,底层原理是b+树)通过这个数据结构快速查找到结果,我们可以把索引理解为一个本书的目录,通过空间来换取时间。

mysql按照不同的分类可以分为不同的索引类型:

  • 按照物理存储分类:聚族索引(主键索引),二级索引(辅助索引)
  • 按照字段特效分类:主键索引,唯一索引,普通索引,前缀索引。

对于聚族索引B++树的叶子节点存放的是数据,而非叶子节点存放的是索引。

二级索引B++树的叶子节点存放的是主键,而不是数据。

当我们通过主键索引查找数据的时候,会直接通过B++树的数据结构在叶子节点查找到数据,而二级索引,他的B++树由于叶子存放的是主键 ,他会找到对应的主键,在另外一颗存放主键的B++树中查找数据,这个过程我们称为回表。当我们查找的数据可以在二级索引中找到我们就称为覆盖

2、为什么在InnoDB存储引擎选择B++树做为索引的底层结构,其他的数据结构可以不可以?

答:

数据库他的工作就是于磁盘打交道,无论他是存储还是查找数据,都是要进行I/O的。所以我们选择的数据结构应该满足:

  • 能在尽可能少的磁盘的 //0 操作中完成查询工作,
  • 要能高效地查询某一个记录,也要能高效地执行范围查找

二分查找树,虽然他的查找的时间复杂度O(logn),但是他在特殊情况下会退化为链表,那时间复杂度就变为了O(n)。

平衡二叉查找树(AVL 树),虽然他解决了这特殊情况下不会退化为链表的情况下,但是如果随着节点的增多,树的高度也会变高,树的高度变高也就意味着I/O的次树会增加。

B树,B树是一种多叉树,他的每个节点都存放着索引+记录。

B+树,B+树也是一种多叉树,他只有叶子节点才会存放记录,并且这些记录是通过双向链表连接起来的。

但是我们这里仍会选择b+树做为mysql索引的底层结构,原因如下:

对于单点查询:由于B++树只有叶子节点才会存放数据,而非叶子结构只会存放索引,但是B树的节点既存放数据+索引,这就导致在有相同的数据情况下B++树会比B树更加矮胖,这也意味着I/O的次数会更少。

插入和删除效率:B++树在删除数据是非常快的,因为数据都在最底层的叶子节点,基本上删除一个节点就可以了。但是B树在删除节点的过程由于没有冗余节点,这就要导致在删除节点后要进行复杂的树形变形来维持树的结构。插入和删除也是一样的。

范围查询:B+树和B树的查找都是从根节点开始,递归向子节点查找,但是B+ 树所有叶子节点间还有一个链表进行连接,这种设计对范围查找非常有帮助,而B树没有这样的结构,比如当我们都查找底层某个叶子节点的时候,B++树可以通过链表进行查找,而不需要在递归返回到上层节点,这样就减少了不必要的I/O,B树就只能返回查找。

3、事务了解吗?他的特性有哪些?能讲一讲你对隔离级别的理解吗?

答:事务是用来 管理数据库中一组逻辑操作的单元,他要么不执行,要么完全执行以保证数据库的一致性

事务有四大特性ACID:

  • 原子性(Atomicity):指的事务的操作要么全部成功,要么全部失败回滚。
  • 一致性(Consistency):在事务的执行前后,数据库都是一致的,也可以认为是符合预期的,比如当我向张三转账300,张三的银行账号应该增加300,也我的账户应该减少300。如果都发生了就是符合预期,这也就是一致性。
  • 隔离性(Isolation):多个并发事务之间相互隔离,一个事务的执行不能被其他事务干扰,这个由事务的隔离级别决定。
  • 持久性(Durability):一旦事务提交,对其数据库的影响是永久的,即使发生了故障也不会影响结果。

 事务的隔离性是由隔离级别决定的,有四种隔离级别,从低到高:

读未提交:指一个事务可以读取到其他未递交的事务,但是会导致脏读,幻读,不可以重复读

读以提交:一个事务只能读取已经提交的数据,但是仍会导致不可重复读,幻读

可重复读:在同一事务中读取同一数据上一致的,不会受到其他事务的影响,防止其实事务的干扰,但可能会出现幻读

可序列化:最高的隔离级别,事务完全串行化执行,事务之间完全隔离,并发性能最差,因为事务完全串行化执行。 

  • 脏读指:在事务中读到了未提交的数据。
  • 不可重复读指:在同一事务中,二次读取结果不同
  • 幻读:在同一事务中,二次查询的结果不一致,比如:新增或者删除的行在第二次查询中会消失。

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

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

相关文章

【最新】精选8家优秀大学生AI论文写作网站

在当前的学术环境中,AI论文写作平台为大学生提供了极大的便利和高效性。以下是8家优秀的AI论文写作网站推荐: 一、千笔-AIPassPaPer 千笔-AIPassPaPer是一款AI原创论文写作平台,能够在10分钟内产出3万字的内容,并提供真实网络数据…

广州城市信息模型(CIM)白皮书学习

CIM平台定义 以建筑信息模型(BIM)、地理信息系统(GIS)、物联网(IoT)等技术为基础,整合城市地上地下、室内室外、历史现状未来多维多尺度信息模型数据和城市感知数据,构建起三维数字空间的城市信息有机综合体。 广州CIM平台建设历程 2019 年 6 月住房和…

关于手机中的红外遥控

在手机电路中,有这么不起眼的一部分,虽看似简单,但是却给我们的生活在一定程度上带来了极大的便捷-红外遥控部分。 其置于手机顶部,并在壳体处挖开一个小孔,用于红外信号对外界的传递。如果你感兴趣的话,不…

【时时三省】unity test 测试框架 使用 code blocks 移植(核心文件:unity.c)

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 目录 1,使用 Code::Blocks 17.12 创建工程 2,移植文件至该工程下: 移入的文件为: 被移入的文件介绍: 更改代码: 向工程添加文…

[数据集][目标检测]生产线上金属罐易拉罐正反面检测数据集VOC+YOLO格式2715张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2715 标注数量(xml文件个数):2715 标注数量(txt文件个数):2715 标注…

【2024年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现

【2024 年华数杯全国大学生数学建模竞赛】C题:老外游中国 问题思路分析及Python代码实现 1 题目 最近,“city 不 city”这一网络流行语在外国网红的推动下备受关注。随着我国过境免签政策的落实,越来越多外国游客来到中国,通过网…

【Nuxt】约定式路由和内置组件

约定式路由 手动创建&#xff1a; 或者还可以使用终端创建页面&#xff1a;nuxi-add-page npx nuxi add page about — about.vue npx nuxi add page about/index — about/index.vue <NuxtLink to"/"><button>Home</button></NuxtLink><…

宅家也能高效办公?试试这四款款远程控制神器!

因为工作时不时需要出差 &#xff0c;所以自打有出差以来遇到同事需要远程求助的情况都会想到远程控制电脑的方式&#xff0c;不仅仅解决了异地无法处理的情况&#xff0c;还能够及时快速并且零成本处理问题&#xff0c;所以今天就整理了四款很适合打工人的远程控制电脑的工具&…

C# Unity 面向对象补全计划 七大原则 之 开闭原则

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列作为七大原则和设计模式的进阶知识&#xff0c;看不懂没关系 请看专栏&#xff1a;http://t.csdnimg.cn/mIitr&#xff0c;查漏补缺 1.开闭原则&#xff08;OC…

Linux 命令安装

系列文章目录 提示&#xff1a;仅用于个人学习&#xff0c;进行查漏补缺使用。 1.Linux介绍、目录结构、文件基本属性、Shell 2.Linux常用命令 3.Linux文件管理 4.Linux 命令安装 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助…

力扣——572.另一个树的子树

题目&#xff1a; 思路&#xff1a; 深度优先搜索&#xff0c;遍历root的每一个节点代表的整棵树是否和subroot一样。比较是否一样的时候可以从根节点开始递归&#xff0c;首先查看是否为空&#xff0c;然后值是否一样。 代码&#xff1a; vs可运行代码&#xff1a; &#…

【C++】异常处理:深度解析与实战精髓,不容错过的编程秘籍

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;C从入门到精通 目录 &#x1f680; 前言&#xff1a;C语言传统的处理错误的方式 一&#xff1a; &#x1f525; C异常概念二&#xff1a; &#x1f525; 异常的使用 2.1 &#x1f4d6; 异常的抛出和…

后端学习笔记(4)--MyBatis

1.MyBatis ​ *MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC开发 *持久层 ​ *负责将数据保存到数据库的那一层代码 ​ *JavaEE三层架构&#xff1a;表现层、业务层、持久层 *框架 ​ *框架是一个半成品软件&#xff0c;是一套可重用的、通用的、软件基础代码…

52 break 与 continue 语句

break 与 continue 语句在 while 循环和 for 循环中都可以使用&#xff0c;并且一般常与选择结构或异常处理结构结合使用。 ① 一旦 break 语句被执行&#xff0c;将使得 break 语句所属层次的循环提前结束。 ② continue 语句的作用是提前结束本次循环&#xff0c;忽略 contin…

量产部落RTS5765DL量产工具,RTS5765DL+三星SSV6顺利开卡,假金士顿固态完美修复,RTS5765、RTS5766固件量产教程

朋友电脑开不了机&#xff0c;判断是硬盘坏了&#xff0c;从上面拆下来一个1TB的金士顿固态盘。 居然用的是RTS5765DL主控三星SSV6颗粒&#xff0c;100%假货了&#xff0c;看来只能用开卡软件来修复。 开卡前必须准备一个开卡转接板&#xff0c;方便固态硬盘通过USB连接电脑&am…

Nginx解析漏洞~CVE-2013-4547漏洞分析

Nginx解析漏洞 这个解析漏洞其实是PHP CGI的漏洞&#xff0c;在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo默认是开启的&#xff0c;当URL中有不存在的文件&#xff0c;PHP就会向前递归解析。在一个文件/xx.jpg后面加上/.php会将 /xx.jpg/xx.php 解析为 php 文件。 CVE-…

实验4-1-7 特殊a串数列求和

//实验4-1-7 特殊a串数列求和/* 给定两个均不超过9的正整数a和n&#xff0c;要求编写程序求aaaaaa⋯aa⋯a&#xff08;n个a&#xff09;之和。 输入格式&#xff1a;输入在一行中给出不超过9的正整数a和n。 输出格式&#xff1a;在一行中按照“s 对应的和”的格式输出。 */#in…

Stegdetect教程:如何用Stegdetect检测和破解JPG图像隐写信息

一、Stegdetect简介 Stegdetect 是一个开源工具&#xff0c;专门设计用于检测图像文件&#xff08;JPG格式&#xff09;中的隐写信息。Stegdetect 可以检测多种常见的隐写方法&#xff0c;比如 JSteg、JPHide 和 OutGuess 等。 二、使用Stegdetect检测图像隐写 官方描述&#…

javaI/O|day2. javaI/O模型、 具体I/O流程、 具体模型

文章目录 javaI/O模型定义具体I/O流程图示过程讲解 具体模型I/O调用两个阶段同异步阻塞非阻塞BIO(同步并阻塞)NIO(同步非阻塞)AIO(异步非阻塞) javaI/O模型 定义 用什么样的通道或者通信模式和架构进行数据的传输和接收,很大程度上决定了程序的性能 具体I/O流程 图示 过程 …

36k Star的开源大模型应用开发平台,太强了!

引言 Dify是一款开源的大语言模型&#xff08;LLM&#xff09;应用开发平台&#xff0c;它帮助开发者和非技术人员&#xff0c;快速构建生产级别的生成式AI应用。 该项目设立于2023 年 3 月&#xff0c;开源协议是基于 Apache License 2.0 有限商业许可&#xff0c;后端技术P…