尚硅谷Java面试题第四季-MySQL面试题

news2024/9/19 9:53:50

1.如何建立复合索引,一般加在哪些字段?建索引的理论依据或者经验

在这里插入图片描述
在这里插入图片描述

2.Innodb的行锁到底锁了什么?

在这里插入图片描述
在这里插入图片描述
结论:
InnoDB的行锁,是通过锁住索引来实现的,如果加锁查询的时候没有使用到索引,会将整个聚簇索引都锁住,相当于锁表了。

命中索引->锁行,没有命中->锁表。

3.什么是回表?

答案:通过辅助索引(二级索引)拿到主键后再回到主键索引查询的过程,就叫做「回表」。

B+树检索原理

由于B+树的非叶子节点只存储键值信息,假设每个磁盘块能存储4个键值及指针信息,则变成B+树后其结构如下图所示:
在这里插入图片描述
B+树中,所有数据记录节点都是按照键值大小顺序存放在同一层的叶子节点上,而非叶子节点上只存储key值信息,这样可以大大加大每个节点存储的key值数量,降低B+树的高度。

B+树算法: 通过继承了B树的特征,B+树相比B树,新增叶子节点与非叶子节点关系。

叶子节点中包含了键值和数据,根节点和枝节点中,只是包含键值和子节点引用,不包含数据。

通过非叶子节点查询叶子节点获取对应的数据,所有相邻的叶子节点包含非叶子节点使用链表进行结合,叶子节点是顺序排序并且相邻节点有顺序引用的关系。

总结

回表是指数据库根据索引(非主键)找到了指定的记录所在行后,还需要根据主键再次到数据块里获取数据的操作。这个过程在MySQL中可能涉及两次查询:首先通过索引扫描找到满足条件的记录的主键值,然后再通过主键值去主键索引中查找完整的行记录。

具体来说,在InnoDB存储引擎中,当通过非聚簇索引查询数据时,由于索引中不包含完整的行数据,因此需要根据索引中找到的主键值再去聚簇索引中查找完整的行数据,这个过程就是回表。

然而,回表操作虽然提供了更全面的数据信息,但也带来了一些问题和局限性。首先,回表操作需要访问两次索引,增加了IO开销和CPU消耗,对查询性能有一定的影响。特别是在高并发、大数据量的情况下,回表可能成为性能瓶颈。其次,由于回表操作是基于物理地址来获取数据,如果在回表过程中发生了数据修改(如DELETE、UPDATE),则可能会读取到不一致或错误的数据。

因此,在设计索引时,需要结合具体的业务场景和查询需求,选择合适的索引策略,以尽量减少回表的次数和影响,提高查询效率和性能。例如,可以通过使用覆盖索引来避免回表操作,覆盖索引是指索引包含了查询所需的所有字段的值,因此可以直接通过索引获取查询结果,而无需再去访问数据表。

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

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

相关文章

【python报错已解决】`Traceback (most recent call last)`

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言 你是否在运行Python程序时遇到了Traceback (most recent call last)的错误?这个错误通常表明你的程序中有一个…

为什么大负载通电瞬间电压跌落,前级MOS开关如何设计

文章目录 1.1 前言1.2 简单典型电路1.3 分析优劣性1.4 优化后的开关电路1.5 具体原理分析1.6 实验验证效果1.7 适用应用场景 1.1 前言 电子产品设计电路某负载需要断电省下或异常下电复位,这时候会考虑在负载供电前端增加一个开关对其进行供电做控制,典…

超声波模块HC_SR04(hal库)

超声波模块HC_SR04 原理 1.触发信号:拉高至少10us的高电平 2.回响信号处理:计算高电平时长 3.计算距离:时间*速度(声速)/2(注意单位问题) 代码实现 方法1.下拉输入 配置 用于延时微秒us和…

第四届机械制造与智能控制国际学术会议(ICMMIC 2024)

目录 重要信息 大会介绍 主办单位 协办单位 大会主席 主讲嘉宾 征稿主题 会议日程 参会方式 重要信息 会议时间:2024年9月27-29日 大会官网:www.icmmic.com(点击查看,大会信息,报名,投稿&#x…

【数据结构初阶】单链表接口实现超详解

文章目录 1. 顺序表问题与思考2.单链表2. 1 概念与结构2.1.1 结点2.1.2 链表的性质 3. 单链表实现3. 1 单链表初始化3. 2 单链表的打印3. 3 头插3. 4 创建新节点3. 5 尾插3. 6 头删和尾删3. 7 查找3. 8 在指定位置之后插入或删除3. 9 在指定位置前面插入或删除指定位置3. 10 销…

推荐一款好用的mac解压缩软件

文章目录 介绍软件功能安装下载使用注意事项1.打开系统设置选择隐私与安全性2.点击添加扩展3.勾选访达扩展 小结 介绍 FastZip for Mac集压缩、解压、预览、加密压缩、分卷压缩、固实压缩、右键压缩解压、多线程压缩等功能于一体,绝佳的设计、便捷的操作&#xff0…

设计师AI神器!AnyDesign,一张照片加简单描述就可以编辑时尚图像!

在AI时代很多行业都被颠覆了,建议大家在业余时间也尽量多学习一些AI工具的使用,提高效率的同时也去探索更多好玩的应用。 今天给大家介绍一个非常好用的图像编辑方法-AnyDesign,适合时尚设计师以及普通用户使用的,可以让你能够更…

Python编程:从入门到实践书籍介绍

对于Python入门的书籍推荐,以下是五本详细讲解的书籍,它们各自具有不同的特点和适用对象: 1. 《Python编程:从入门到实践》 作者:埃里克马瑟斯(Eric Matthes)《Python编程:从入门到实践》是一本经典的Pyth…

C#实现数据采集系统-数据反写(1)MQTT订阅接收消息

C#实现数据采集系统-数据反写 实现步骤 MQTT订阅,接收消息反写内容写入通信类,添加到写入队列中 链接-消息内容处理和写入通信类队列实现Modbustcp通信写入 具体实现 1.MQTT订阅,接收消息 Mqtt实现采集数据转发 Mqtt控制类增加订阅方法…

【微信小程序】使用 npm 包 - Vant Weapp --定制主题

小程序对 npm 的支持与限制 1. 什么是 Vant Weapp 官方文档地址 :https://youzan.github.io/vant-weapp 2. 安装 Vant 组件库 详细的操作步骤,大家可以参考 Vant 官方提供的快速上手教程: https://youzan.github.io/vant-weapp/#/quickst…

Texio电源维修德士直流电源维修PSW-1080M160

Texio德士电源维修类型有:指针式小型直流电源、数字显示直流电源、多路输出直流电源、直流电源、相控电源、低噪声开关电源、宽幅电源、高电压宽幅电源、开关电源、超薄直流电源、4象限双电源、高电压直流电源 Texio电源维修常见系列如下 PSW-系列是一款单路输出、…

框架——Mybatis(!!!MyBatis 环境搭建步骤)

目录 一、Mybatis 概述 1.背景 2.简介 3.Mybatis 中文官网 二、MyBatis 环境搭建(超全!!!) 1.创建一张表和表对应的实体类 2.导入 MyBatis jar包,mysql数据库驱动包 3.创建 MyBatis全局配置文件 4. 在接口中…

2024年4款高质量的英语翻译工具推荐!

英语作为一门应用非常广泛的语言,其影响力还是非常深远的。虽然现在学英语的人很多,但对于非英语母语的人来说,英语多多少少会是一个壁垒,所以翻译工具也变得重要了起来。这次,我便要跟大家分享几个很专业的英语翻译工…

连锁门店收银系统源码+电子发票

传统纸质开票模式,流程复杂、时间长,为解决商户开票难的问题,千呼新零售2.0上线了电子发票功能,开通方便,使用简便!商户只需要简单配置,就可以实现门店实现开票自由! 一、线下订单开…

黑马程序员|8天Python第13章面向对象

一 初识对象 1.生活中数据的组织 2.程序中数据的组织 3.使用对象组织数据 类的属性: 二 成员方法 1.类的定义和使用 2.成员变量和成员方法 类外面是函数,类里面是方法。 3.成员方法的定义语法 self 只是写在这里,传参的时候可以当作不存在。…

QTCreator学习

1.新建程序 2. 设置项目名称 3. Build System选择qmake,若选择cmake则只会产生CmakeLists文件,不会产生pro文件。 4.Base class选择QDialog,表示该类继承于QDialog类 5.套件选择MinGW 32bit,取消掉其他的。 6. 双击ui文件,拖动可添加工具。 7.点击左…

深信服技术服务工程师面试全过程分享

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…

这对二婚夫妻结婚半年,一起生活才一个月,就走到了婚姻尽头!

这对二婚夫妻结婚半年,一起生活才一个月,就走到了婚姻尽头! 这是一篇涉离婚纠纷的民事起诉状 (范文点评) 离 婚 起 诉 状 原告:韩某斌,男,现年37岁,汉族,打…

Spring Cloud Consul面试题

​ ​ 您好,我是程序员小羊! 前言 Spring Cloud Consul 是微服务架构中的一个重要组件,用于服务发现、配置管理以及健康检查。了解 Spring Cloud Consul 的工作原理和应用场景,对于微服务开发者和架构师来说至关重要。以下是一些常…

线程优先级调度

Windows优先级调度算法 系统维护了一个全局的处理器数组KiProcessorBlock,其中每个元素对应于一个处理器的KPRCB对象。其次,另有一个全局变量KiIdleSummary记录了哪些处理器当前是空闲的。所谓一个处理器是空闲的,是指该处理器正在执行空闲循…