数据库篇--八股文学习第十六天| MySQL的执行引擎有哪些?;MySQL为什么使用B+树来作索引;说一下索引失效的场景?

news2024/10/1 5:34:52

1、MySQL的执行引擎有哪些?

答:

MySQL的执行引擎主要负责查询的执行和数据的存储, 其执行引擎主要有MyISAMInnoDBMemery 等。

  • InnoDB引擎提供了对事务ACID的支持,还提供了行级锁和外键的约束,是目前MySQL的默认存储引擎,适用于需要事务和高并发的应用。

  • MyISAM引擎是早期的默认存储引擎,支持全文索引,但是不支持事务,也不支持行级锁和外键约束,适用于快速读取且数据量不大的场景。

  • Memery就是将数据放在内存中,访问速度快,但数据在数据库服务器重启后会丢失。

2、MySQL为什么使用B+树来作索引 

答:

B+树是一个B树的变种,提供了高效的数据检索、插入、删除和范围查询性能。

  • 单点查询:B 树进行单个索引查询时,最快可以在 O(1) 的时间代价内就查到。从平均时间代价来看,会比 B+ 树稍快一些。但是 B 树的查询波动会比较大,因为每个节点既存索引又存记录,所以有时候访问到了非叶子节点就可以找到索引,而有时需要访问到叶子节点才能找到索引。B+树的非叶子节点不存放实际的记录数据,仅存放索引,所以数据量相同的情况下,相比存储即存索引又存记录的 B 树,B+树的非叶子节点可以存放更多的索引,因此 B+ 树可以比 B 树更「矮胖」,查询底层节点的磁盘 I/O次数会更少。

  • 插入和删除效率:B+ 树有大量的冗余节点,删除一个节点的时候,可以直接从叶子节点中删除,甚至可以不动非叶子节点,删除非常快。B+ 树的插入也是一样,有冗余节点,插入可能存在节点的分裂(如果节点饱和),但是最多只涉及树的一条路径。B 树没有冗余节点,删除节点的时候非常复杂,可能涉及复杂的树的变形。

  • 范围查询:B+ 树所有叶子节点间有一个链表进行连接,而 B 树没有将所有叶子节点用链表串联起来的结构,因此只能通过树的遍历来完成范围查询,这会涉及多个节点的磁盘 I/O 操作,范围查询效率不如 B+ 树。存在大量范围检索的场景,适合使用 B+树,比如数据库。而对于大量的单个索引查询的场景,可以考虑 B 树,比如nosql的MongoDB。

3、说一下索引失效的场景? 

 答:

索引失效意味着查询操作不能有效利用索引进行数据检索,从而导致性能下降,下面一些场景会发生索引失效。

  1. 使用OR条件:当使用OR连接多个条件,并且每个条件用到不同的索引列时,索引可能不会被使用。
  2. 使用非等值查询:当使用!=<>操作符时,索引可能不会被使用,特别是当非等值条件在WHERE子句的开始部分时。
  3. 对列进行类型转换: 如果在查询中对列进行类型转换,例如将字符列转换为数字或日期,索引可能会失效。
  4. 使用LIKE语句:以通配符%开头的LIKE查询会导致索引失效。
  5. 函数或表达式:在列上使用函数或表达式作为查询条件,通常会导致索引失效。
  6. 表连接中的列类型不匹配: 如果在连接操作中涉及的两个表的列类型不匹配,索引可能会失效。例如,一个表的列是整数,另一个表的列是字符,连接时可能会导致索引失效。

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

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

相关文章

227还原实战(三)

调转符号 为了方便后面处理 &#xff0c;我们先将所有的 二项表达式 进行预处理&#xff0c;将标识符放在左边&#xff0c; 数字放在右边&#xff0c; 比较简单&#xff0c;不多解释 转换逗号表达式 这里还原逗号表达式就要简单很多&#xff0c;主要是还原三元外的逗号表达式…

Agent知识库:功能、原理浅析

随着LLM不断发展&#xff0c;基于LLM的Agent今年来十分火热。Agent知识库不仅可以存储大量的信息&#xff0c;还包含了丰富的规则、算法和模型&#xff0c;是Agent实现智能化决策和行动的关键。本文将介绍Agent知识库的功能、原理以及相关落地应用。 概览 能力 1.Knowledge&a…

UDP端口可达性检测(端口扫描)工具开发

UDP端口可达性检测(端口扫描)工具开发 1、应用场景分析 主机X与主机Y部署在AB双网环境下&#xff0c;两个主机间通过UDP协议进行数据交互。应用程序发送数据时&#xff0c;优先使用A网发送数据&#xff0c;如果A网异常则通过B网发送数据。两个主机应用间没有设置心跳帧 &…

Vue 3+Vite+Eectron从入门到实战系列之(四)一Electron热身运动(二)

在electron里面能不呢实现暗黑模式和明亮模式的切换&#xff1f;我们怎么读取主进程里面的数据和系统数据。这篇就是来实现这几个效果的 实现效果 更改系统的主题色 在 App.vue 中添加代码。 <el-button type"warning" click"changeTheme">更改系…

Python 进行反射和元编程

反射和元编程是Python中两种强大且高级的编程技术。反射允许程序在运行时检查和修改自身结构和行为&#xff0c;而元编程则是编写可以操作其他代码的代码&#xff0c;通常通过使用元类、装饰器等技术来实现。 1. 反射 反射是指程序在运行时检查和操作自身结构的能力。Python通…

【Dash】使用 dash_mantine_components 创建图表

一、Styling Your App The examples in the previous section used Dash HTML Components to build a simple app layout, but you can style your app to look more professional. This section will give a brief overview of the multiple tools that you can use to enhan…

日常知识点之阿里云服务器提示禁用了密码登录方式

使用阿里云服务器进行一些实例测试时&#xff0c;发现业务启动后&#xff0c;服务器连接卡死&#xff0c;重连显示拒绝密码登录。 尝试好几次&#xff0c;因为在做的业务&#xff0c;怀疑可能时磁盘或者内存导致&#xff0c;但是&#xff0c;这玩意为啥会导致拒绝密码登录也是…

【C++】初识面向对象:类与对象详解

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间缺省参数与函数重载C相关特性 本章将介绍C中一个重要的概念——类。通过类&#xff0c;我们可以类中定义成员变量和成员函数&#xff0c;实现模块化封装&#xff0c;从而构建更加抽象和复杂的工程。 &…

springboot约车APP-计算机毕业设计源码96773

基于Spring Boot的约车APP设计与实现 摘要 本文基于Spring Boot框架设计并实现了一款约车APP&#xff0c;旨在为用户提供便捷的出行服务。通过后端Spring Boot框架和前端交互界面的设计&#xff0c;实现了用户快速叫车、实时定位、路线规划等功能。系统结合了高效的后端处理和直…

LVS 调度器 nat和DR模式

lvs-nat 修改请求报文的目标IP,多目标IP的DNAT 配置网络 LVS主机 注意网卡的顺序 &#xff08;nat和主机模式&#xff09; [rootlvs ~]# cat /etc/NetworkManager/system-connections/ens160.nmconnection [connection] idens160 typeethernet interface-nameens160 ​ [ip…

[Unity]在场景中随机生成不同位置且不重叠的物体

1.前言 最近任务需要用到Unity在场景中随机生成物体&#xff0c;且这些物体不能重叠&#xff0c;简单记录一下。 参考资料:How to ensure that spawned targets do not overlap ? 2.结果与代码 结果如下所示&#xff1a; 代码如下所示&#xff1a; using System.Collec…

阿一网络安全学院学员作业——XSS DOM 型靶场

第一题 第二题 查看源码发现这里引用的 angular 框架 body 头为 ng-app 搜索文献得知 angular 框架可以将 {{x}} 内部执行函数 试验得知 angular 可以执行 {{ }} 内部函数 那么我们注入代码 {{alert()}} 调用了 search 解释器 那么我们注入的 search 是 先闭合 ”…

详解Xilinx FPGA高速串行收发器GTX/GTP(3)--GTX的时钟架构

目录 1、参考时钟 2、时钟方案 2.1、单个外部参考时钟驱动单个QUAD中的多个transceiver 2.2、单个外部参考时钟驱动多个QUAD中的多个transceiver 2.3、同一个Quad中,多个GTX Transceiver使用多个参考时钟 2.4、不同Quad中,多个GTX Transceiver 使用多个参考时钟 3、QP…

开源免费前端地图开发组件xdh-map

xdh-map是一个基于Openlayers的地图应用Vue组件&#xff0c;具有多方面的功能和特点。以下是对xdh-map的详细介绍&#xff1a; 一、功能与特性 内置多种地图瓦片&#xff1a;xdh-map内置了百度、高德、天地图等地图瓦片&#xff0c;使得开发者可以方便地在应用中集成多种地图…

机器视觉24

block使用流程 初始化工具 初始化相机 拍照事件 保存图片事件 读取图片事件 拍照完成后事件 检测事件 跳转block设置页面 曝光设置 关闭相机 保存图片封装方法 读取图片封装方法 //Block 设置窗体 实时显示 扩展 因为VP中有很多工具 所以在VS中使用时 可能频繁的导入工具…

DPDI online在线调度系统环境部署

DPDI online简介&#xff1a; DPDI Online 是一款基于Kettle的强大在线任务调度平台&#xff0c;凭借其高效与灵活性&#xff0c;专为调度和监控Kettle客户端生成的ETL任务而设计 DPDI online部署 DPDI服务部署文档包含依赖环境部署和应用本身部署 依赖环境部署 &#xff1…

Unity导入Avpro插件(3.0.8版本)打包安卓时报错

报错信息&#xff08;部分&#xff09; Exception while marshalling C:\Program Files\Unity\Hub\Editor\2022.3.34f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\build-tools\32.0.0\package.xml. Probably the SDK is read-only Exception while marshalling C:\Prog…

等保测评:如何应对网络攻击——构建全面的防御体系

在数字化转型的浪潮中&#xff0c;网络攻击已成为企业和组织面临的严峻挑战。等保测评&#xff0c;作为我国信息安全等级保护制度的重要组成部分&#xff0c;为企业提供了应对网络攻击的指导框架。本文旨在探讨等保测评在防御网络攻击中的关键作用&#xff0c;为企业提供实践指…

时间序列生成模型TimeGAN介绍与实现

目录 1. 模型介绍2. 问题提出3. 模型具体实现3.1 嵌入和恢复函数3.2 序列生成器和判别器3.3 联合学习编码、生成和迭代 4. 代码实现参考文献 时间序列数据在金融、医疗和物联网等领域具有广泛的应用。生成真实感的时间序列数据对于数据增强、隐私保护和模拟研究具有重要意义。T…

【Android Studio】原生应用部署第三方插件(探针)

一、本地引入包流程 &#xff08;一&#xff09;本地引入包内容 &#xff08;二&#xff09;本地引入包操作步骤 将 【probe-android-sdk】目录里面所有的aar包复制到嵌码项目工程&#xff08;App级别&#xff09;的 libs 目录下 二、添加插件 &#xff08;一&#xff09;…