news 2026/5/11 4:10:37

浅谈Mysql的哈希索引及特点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
浅谈Mysql的哈希索引及特点

目录

哈希索引

哈希索引的特点

哈希索引的性能

InnoDB中的自适应哈希索引

InnoDB自适应哈希索引开关


在InnoDB存储引擎中一般使用的是B+树索引。

其实mysql中还有另一种常见的索引即哈希索引;在Memory存储引擎中就支持哈希索引。

同时,在InnoDB存储引擎中也支持自适应哈希索引,这个是引擎层做的优化,不可人为控制,但也可以与B+树索引共同使用提升查询效率。

哈希索引

数据库中哈希索引是基于哈希表实现的,对于哈希索引列的数据通过 Hash 算法计算,得到对应索引列的哈希码形成哈希表,由哈希码及哈希码指向的真实数据行的指针组成了哈希索引。

哈希索引的特点

哈希索引只适用于等值查询,不支持范围查询。等值查询包括 =、IN()、<=> (安全等于, select null <=> null 和 select null=null 是不一样的结果)

哈希索引的性能

哈希索引的性能跟哈希冲突数量成反比,哈希冲突越多其维护代价越大性能越低 。Hash 碰撞通用的处理方法是使用链表,将 Hash 冲突碰撞的元素形成一个链表,发生冲突时在链表上进行二次遍历找到数据。

Hash 碰撞跟选择的 Hash 算法有关系,为了减少 Hash 碰撞的概率,优先选择避免 Hash 冲突的 Hash 算法,例如,使用 Percona Server 的函数 FNV64() ,其哈希值为 64 位,出现 Hash 冲突的概率要比 CRC32 小很多。

InnoDB中的自适应哈希索引

InnoDB 自适应哈希索引是为了提升查询效率,InnoDB 存储引擎会监控表上各个索引页的查询,当 InnoDB 注意到某些索引值访问非常频繁时,会在内存中基于 B+Tree 索引再创建一个哈希索引,使得内存中的 B+Tree 索引具备哈希索引的功能,即能够快速定值访问频繁访问的索引页。

为什么要为 B+Tree 索引页二次创建自适应哈希索引呢?

因为 B+Tree 索引的查询效率取决于 B+Tree 的高度,在数据库系统中通常 B+Tree 的高度为 3~4 层,所以访问数据需要做 3~4 次的查询。而 Hash 索引访问通常一次查找就能定位数据(无 Hash 碰撞的情况),其等值查询场景 Hash 索引的查询效率要优于 B+Tree。

InnoDB自适应哈希索引开关

InnoDB 自适应哈希索引的功能,用户只能选择开启或关闭功能,无法进行人工干涉。

功能开启后可以通过 Show Engine Innodb Status 看到当前自适应哈希索引的使用情况:

Hash table size 276707, node heap has 0 buffer(s)

0.00 Hash searches/s, 0.00 non-Hash searches/s

可以看到 Hash table 的大小,使用情况及每秒使用 AHI 和非 AHI 搜索的情况。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 4:07:36

【网安第10课】NTFS权限

一.权限概念 不同的用户所在的组不同&#xff0c;不同的组拥有不同的权限 对文件夹和文件进行增&#xff0c;删&#xff0c;改&#xff0c;查&#xff0c;执行权限 二.文件系统 1.概念 文件系统是操作系统用于明确存储设备&#xff08;常见的是磁盘&#xff0c;也有基于NAN…

作者头像 李华
网站建设 2026/5/11 4:04:55

dnGrep搜索结果分析与报告生成:如何导出和分享搜索数据

dnGrep搜索结果分析与报告生成&#xff1a;如何导出和分享搜索数据 【免费下载链接】dnGrep Graphical GREP tool for Windows 项目地址: https://gitcode.com/gh_mirrors/dn/dnGrep dnGrep是一款强大的Windows图形化GREP搜索工具&#xff0c;它不仅能够快速搜索文件内容…

作者头像 李华
网站建设 2026/5/11 3:57:22

CANN/GE查询模型内存分区

aclmdlQueryExeOMDesc 【免费下载链接】ge GE&#xff08;Graph Engine&#xff09;是面向昇腾的图编译器和执行器&#xff0c;提供了计算图优化、多流并行、内存复用和模型下沉等技术手段&#xff0c;加速模型执行效率&#xff0c;减少模型内存占用。 GE 提供对 PyTorch、Tens…

作者头像 李华
网站建设 2026/5/11 3:52:31

ARM GICv3中断控制器与ICC_BPR1寄存器详解

1. ARM GICv3中断控制器架构概述在ARM架构的现代处理器中&#xff0c;通用中断控制器(GIC)是管理硬件中断的核心组件。GICv3作为当前主流的版本&#xff0c;相比前代架构进行了多项重要改进&#xff1a;支持更多处理器核心&#xff08;理论上可达128个PE&#xff09;改进的中断…

作者头像 李华
网站建设 2026/5/11 3:51:34

AI知识库构建实战:从RAG原理到企业级应用部署

1. 项目概述&#xff1a;一个面向AI的知识库构建方案最近在折腾AI应用开发&#xff0c;特别是想搞点能“记住”东西的智能助手。我发现很多朋友和我一样&#xff0c;对如何让AI模型&#xff08;比如大语言模型&#xff09;访问和利用我们自己的文档、笔记、公司资料这些私有知识…

作者头像 李华