[MySQL索引]4.索引的底层原理(三)
索引的底层原理(三)
- 哈希索引
- InnoDB自适应哈希索引
哈希索引
memory存储引擎支持的是哈希索引,memory是支持内存的存储引擎。
哈希表中的元素没有任何顺序可言,只能进行等值比较,包括范围搜索、前缀搜索like、order by排序这些操作,哈希索引都不适合。
哈希索引无法处理磁盘上的数据,加载到内存上构建高效的搜索数据结构。
只适合做等值搜索,其他的范围、排序等不合适。
只能是做一些数据不落盘的操作
当被问到是否了解B+索引和哈希索引时,请把重点先放到B+树索引上。
InnoDB自适应哈希索引

对于MySQL5.7一些比较重要的描述:
- 自适应哈希索引系统会进行分区,这是因为如果要在一个桶中进行并行的操作,那就要对这个桶加锁,维护线程安全,但是加锁就会阻塞线程;如果线程在不同的桶中进行操作,那么就不会出现竞态条件,也就不用加锁;
- 自适应哈希索引总是基于二级索引树(B+树)上的二级索引值来构建的,目的是为了加速查找
- 我们可以监控自适应哈希索引的使用,根据几个重要的参数信息来判断是否要关掉自适应哈希索引

实际业务中如果出现大量像·“where后面跟着索引字段的等值查询“这样的情况,那如果存储引擎依然基于二级索引树进行搜索,找到key所对应的主键(比如uid),然后再到主键索引树中进行搜索找到主键所对应的数据,大量这样的回表操作也会降低查询的速度。
所以InnoDB存储引擎设计了针对的优化策略,当InnoDB存储引擎监测到同样的二级索引不断被使用(进行等值比较),那么它会根据这个二级索引,在内存上根据二级索引树上的二级索引值,在内存上构建一个哈希索引(链式哈希表,只支持等值查询),来加速搜索(哈希索引查询的时间复杂度为O(1)),其中每个哈希桶上存储的就是数据的地址,这样在下一次利用这个二级索引进行等值查询时,利用哈希索引就可以直接找到数据地址。
但是需要注意的是自适应哈希索引本身的数据维护也是要耗费性能的,并不是说自适应哈希索引在任何情况下都会提升二级索引的查询性能,根据参数指标,来具体分析是否打开或者关闭自适应哈希索引
show variables like 'innodb_adaptive_hash_index';
默认是开启自适应哈希索引的:

查看默认的分区数:
show variables like 'innodb_adaptive_hash_index_parts';

可以通过下面的语句看到两个比较重要的信息:
show engine Innodb status\G
-
RW-latch等待的线程数量(自适应哈希索引默认分配8个分区),同一个分区中等待的线程数量过多

-
走自适应哈希索引搜索的频率(低)和二级索引树的频率(高)

情况2就说明实际业务中这样的等值查询是比较少的,那维护自适应哈希索引也要耗费很多性能,不如就直接进行二级索引
出现以上两种情况,最好就把自适应哈希索引关闭掉。
相关文章:
[MySQL索引]4.索引的底层原理(三)
索引的底层原理(三)哈希索引InnoDB自适应哈希索引哈希索引 memory存储引擎支持的是哈希索引,memory是支持内存的存储引擎。 哈希表中的元素没有任何顺序可言,只能进行等值比较,包括范围搜索、前缀搜索like、order by…...
2023金三银四应届生求职面试指南
一、应届生优势 划重点,一定要走校招;千万不要等毕业之后再想着找工作,在毕业前就要敲定落实;否则,就真的该焦虑了。要知道应届生的身份是一个很吃香的身份;只有应届生可以走校园招聘。 1、那校园招聘跟社会招聘有多大的差距?? 这么说吧&…...
【数据结构】解决顺序表题的基本方法
🚀write in front🚀 📜所属专栏:> 初阶数据结构 🛰️博客主页:睿睿的博客主页 🛰️代码仓库:🎉VS2022_C语言仓库 🎡您的点赞、关注、收藏、评论࿰…...
HDFS如何解决海量数据存储及解决方案详解
HDFS组件 HDFS组件的基准测试 说明 一般在搭建完集群之后,运维人员需要对集群进行压力测试,对于HDFS来讲,主要是读写测试写入测试 hadoop jar /export/server/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.…...
认识CSS值如何提高写前端代码的效率
🌟所属专栏:前端只因变凤凰之路🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该系列将持续更新前端的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步~👉文章简…...
MySQL知识点全面总结3:Mysql高级篇
三.MySQL知识点全面总结3:mysql高级篇 1.mysql语句的执行过程? 2.myesql事务详解? 3.mysql日志详解? 4.mysql的索引功能详解? 5.mysql的存储引擎详解? 6.mysql事务提交后数据与硬盘如何交互存储&…...
Spring注解开发之组件注册(二)
Spring注解开发之组件注册(一) 5.Import 给容器导入一个组件 给容器中注册组件 一、包扫描 组件标注注解(Controller/Service/Repository/Component) [自己写的类] 二、Bean [导入的第三包里面的组件] 三、Import [快速给容器中导入组件] (Import{…...
【web前端开发】CSS最常用的11种选择器
文章目录1.CSS介绍2.CSS的语言规则3.CSS的引入方式4.选择器标签选择器类选择器id选择器通配符选择器复合选择器后代选择器子代选择器并集选择器交集选择器伪类选择器hover伪类选择器active伪类选择器结构伪类选择器结语1.CSS介绍 CSS (Cascading Style Sheets,层叠样…...
微电影广告发展的痛点
微电影广告以不可阻挡之势进入大众生活中,企业利用微电影广告来进行企业形象塑造的例子比比皆是。于是乎,微电影广告在为企业塑造品牌形象方面上取得了可喜的效果,但也不可忽视,在这个发展过程中,微电影广告所面临的问…...
uniapp新手入门
前言: 这篇文章主要写的是uniapp的基础知识,可以让大家快速上手uniapp,同时避掉一些可能踩到的坑。 一. 什么是uniapp uniapp是由dcloud 公司开发的多端融合框架。uniapp的出现让我们的开发更为方便,一次开发,多端运行…...
linux segfault at 问题定位实践
问题:程序崩溃,打印为:app[13016]: segfault at 7fb668d29930 ip 00007fb668d3c23c sp 00007fb668e7de20 error 7 in mydefine.so[7fb668d3400011000]定位步骤:基础分析数据,大概了解反馈信息(根据chatGPT&…...
SpringCloud+SpringCloudAlibaba
架构的演进1.1单体架构将所有业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上。◆ 1.1.1单体架构的优点1)部署简单: 由于是完整的结构体,可以直接部署在一个服务器上即可。2&…...
华为OD机试 - 路灯照明(C 语言解题)【独家】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:路灯照明…...
Linux程序替换
Linux程序替换创建子进程的目的?程序替换如何实现程序替换?什么是程序替换?先见一见单进程版本的程序替换程序替换原理多进程版本的程序替换execl函数组简易版Shell创建子进程的目的? 目的:为了帮助父进程完成一些特定的任务&…...
@JsonFormat @DataTimeFormat 时间格式
省流:用JsonFormat即可有时候会看到入参dto里,在时间类型的变量上用DateTimeFormat,代码如下。public class XXXdto{DateTimeFormat(pattern "yyyy-MM-dd hh:mm:ss")private Date startDate; }这是为了入参传日期格式的值。即前端…...
带你玩转modbusTCP通信
modbus TCP Modbus TCP是一种基于TCP/IP协议的Modbus通信协议,它是Modbus协议的一种变体,用于在以太网上进行通信。Modbus TCP协议是一种开放的通信协议,它支持多种编程语言和操作系统,并且可以在不同的硬件和软件平台上进行通信…...
2021牛客OI赛前集训营-提高组(第三场)T2交替
2021牛客OI赛前集训营-提高组(第三场) 题目大意 一个长度为nnn的数组aaa,每秒都会变成一个长度为n−1n-1n−1的新数组a′aa′,其变化规则如下 如果当前数组aaa的大小nnn为偶数,则对于新数组a′aa′的每一个位置i(1≤…...
论文投稿指南——中文核心期刊推荐(金融)
【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...
华为OD机试 - 不等式(C 语言解题)【独家】
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 使用说明本期题目:不等式题…...
90后老板用低代码整顿旅行社,创2000万年收,他是怎么做到的?(真实)
热爱旅游的92年成都小伙猴哥,大学毕业后开了一家旅行社,主要从事川藏、云南定制游服务。 从今年春节开始,国内各地旅游业开始复苏,向旅行社打电话咨询的人越来越多。 旅游的人多是好事,也是一种烦恼,因为…...
OpenClaw可视化监控:为nanobot任务添加Web仪表盘
OpenClaw可视化监控:为nanobot任务添加Web仪表盘 1. 为什么需要可视化监控? 去年夏天,我部署了一个基于OpenClaw的nanobot自动化任务,用于定时抓取行业动态并生成日报。最初几周运行良好,直到某天早上发现连续三天的…...
高效解决多设备滚动冲突难题的Scroll Reverser工具
高效解决多设备滚动冲突难题的Scroll Reverser工具 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser Scroll Reverser是一款专为macOS用户设计的开源效率工具,它能够为…...
AOP 失效的 7 种死法与复活指南
还是那句话,知识是一个返回的过程,追一句:时间出真知今天我们要聊的是一个“灵异事件”频发的领域——Spring AOP 失效。你是不是也经历过这种崩溃:“明明加了 Transactional,为什么数据库报错不回滚?” “…...
高密度PCB贴装实战:如何用模块化治具解决0.3mm间距元件定位难题
高密度PCB贴装实战:模块化治具在0.3mm间距元件定位中的创新应用 当智能手表的PCB板面积缩小到指甲盖大小时,上面的0402元件间距已经突破0.3mm极限——这相当于在1元硬币上精准摆放50根头发丝。消费电子微型化浪潮下,传统治具的定位误差正在吞…...
开源风扇控制工具FanControl全攻略:从问题诊断到散热方案优化
开源风扇控制工具FanControl全攻略:从问题诊断到散热方案优化 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tren…...
SketchUp STL插件:从数字设计到3D打印的无缝桥梁
SketchUp STL插件:从数字设计到3D打印的无缝桥梁 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl SketchUp STL插件…...
【Python AI 工具实战宝典】:20个高复用AI用例+开箱即用代码模板,限时开源库清单泄露!
第一章:Python AI 工具生态全景与实战价值定位Python 已成为人工智能开发的事实标准语言,其核心优势不在于单一库的性能,而在于高度协同、分层清晰的工具生态体系。从底层计算(NumPy、CuPy)、模型构建(PyTo…...
FSearch:极速文件搜索工具,让Linux文件查找告别等待
FSearch:极速文件搜索工具,让Linux文件查找告别等待 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 还在为Linux系统中查找文件而烦恼吗&#…...
PFC颗粒流代码模拟岩石预制裂隙与完整岩石单轴压缩对比分析
PFC颗粒流代码 pfc离散元岩石预制裂隙,裂隙岩石与完整岩石单轴压缩代码,可出各种裂隙形式,可分析应力应变曲线图,裂隙发育与数量,能量变化,简易声发射分析等做岩石单轴压缩离散元模拟的,谁没为…...
AI虚拟员工平台完整搭建教程:从源码获取到正式上线,全流程记录
温馨提示:文末有资源获取方式最近AI赛道又火了一个新方向,很多人都在讨论,但真正能用起来的没几个。技术门槛摆在那,普通用户想上手确实不容易。今天这篇教程,我把从源码部署到正式上线的完整过程整理出来,…...
