当前位置: 首页 > news >正文

【MySQL】自适应哈希详解:作用、配置以及如何查看

📢博客主页:https://blog.csdn.net/2301_779549673
📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 JohnKi 原创,首发于 CSDN🙉
📢未来很长,值得我们全力奔赴更美好的生活✨

在这里插入图片描述

在这里插入图片描述

文章目录

  • 🏳️‍🌈一、自适应哈希索引的作用?
    • 1.1 为什么要创建自适应哈希索引?
    • 1.2 自适应哈希索引的Key-Value如何设置?
    • 1.3 自适应哈希索引在保存在哪里?
  • 🏳️‍🌈二、关于自适应哈希索引有哪些配置项?
  • 🏳️‍🌈三、怎么查看自适应哈希索引的信息?
  • 👥总结


前些天发现了一个巨牛的 人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到 网站。


🏳️‍🌈一、自适应哈希索引的作用?

  • 自适应哈希索引可以使 InnoDB 存储引擎在不牺牲 事务特性可靠性 以及 缓冲池空间足够 的前提下提升效率,使用起来更像是一个内存数据库,哈希索引根据经常访问的索引页自动构建;
  • 根据InnoDB内部的监控机制,如果监控到某些查询通过建立哈希索引可以提高性能,则自动对这个页创建哈希索引,这个过程称为 自适应,所以叫自适应哈希索引;
  • 如果表完全放在内存中,则哈希索引可以通过直接查找任何元素来加快查询速度

1.1 为什么要创建自适应哈希索引?

  • InnoDB存储引擎的数据存储于B+树中,B+树通常只有3到5层,但从根节点到叶节点的寻路涉及到多层页面内记录的比较,即使所有路径上的页面都在内存中,也非常消耗CPU的资源
  • InnoDB对寻路的开销进行了优化,比如寻路结束后将cursor缓存起来方便下次查询复用,尽可能的避免单词寻路开销,Adaptive hashindex(AHI)便是为此而设计,可以理解为B+树的索引
  • 本质上是通过缩短寻路路径(SearchPath)从,而提升MySOL查询性能的一种方式

1.2 自适应哈希索引的Key-Value如何设置?

以查询条件为 key,B+树页的地址为 value 的 HashIndex

1.3 自适应哈希索引在保存在哪里?

自适应哈希索引会占用缓冲池一部分内存区域,在缓冲池初始化后被初始化,为了避免AHI的锁竞争压力,AHI支持分区,可以使用 innodb_adaptive_hash_index_parts 参数配置分区个数,默认为8。

注意: 自适应哈希索引是InnoDB内部的优化方式,外部不能干预

🏳️‍🌈二、关于自适应哈希索引有哪些配置项?

通过设置系统变量 innodb_adaptive_hash_index 开启或关闭自适应哈希索引在选项文件中设置系统变量

  • innodb_adaptive_hash_index = [ 1 | 0 ]实现开启与关闭
  • 通过命令行选项 --skip-innodb-adaptive-hash-index 也可以关闭自适应哈希索引

每个自适应散列索引被绑定到不同的分区中,每个分区有不同的锁保护,分区数量由系统变量innodb_adaptive_hash_index_parts 控制,默认值为8,最大值为 512。

🏳️‍🌈三、怎么查看自适应哈希索引的信息?

通过使用 SHOW ENGINE InnODB STATUS 访问 InnoDB 标准监视器输出中 INSERT BUFFERAND ADAPTIVE HASH INDEX 部分查看自适应哈希索引使用信息,如果锁争抢过多,可以考虑增加自适应哈希索引分区数量或禁用自适应哈希索引。

mysql> SHOW ENGINE INNODB STATUS\G
*************************** 1. row ***************************
Type: InnoDB
Name:
Status:
=====================================
... # 省略
-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
insert 0, delete mark 0, delete 0
discarded operations:
insert 0, delete mark 0, delete 0
# 字节为单位,占⽤内存空间总量
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 4 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 0 buffer(s)
Hash table size 34679, node heap has 1 buffer(s)
# 计算⾃适应hash索引带来的收益以及付出,确定是否开启⾃适应hash索引
0.00 hash searches/s, 0.00 non-hash searches/s

👥总结

本篇博文对 【MySQL】自适应哈希详解:作用、配置以及如何查看 做了一个较为详细的介绍,不知道对你有没有帮助呢

觉得博主写得还不错的三连支持下吧!会继续努力的~

http://www.xdnf.cn/news/440713.html

相关文章:

  • Windows10安装WSA
  • ECharts中Map(地图)样式配置、渐变色生成
  • OracleLinux7.9-ssh问题
  • Windows避坑部署CosyVoice多语言大语言模型
  • CSS Grid布局:从入门到实战
  • 《Python星球日记》 第70天:Seq2Seq 与Transformer Decoder
  • sql练习题
  • springboot + mysql8降低版本到 mysql5.7
  • Java中的异常机制
  • Java 直接内存ByteBuffer.allocateDirect原理与源码解析
  • git切换分支后需要pull吗
  • Spark缓存---cache方法
  • 在Ubuntu24.04中配置开源直线特征提取软件DeepLSD
  • Java 与 Go 语言对比
  • Milvus 视角看主流嵌入式模型(Embeddings)
  • 推荐一个Winform开源的UI工具包
  • 《AI大模型应知应会100篇》第64篇:构建你的第一个大模型 Chatbot
  • 嵌入式C语言中指针的不同类型及其特点分析
  • iOS 阅后即焚功能的实现
  • 如何利用大模型对文章进行分段,提高向量搜索的准确性?
  • 关于 Golang GC 机制的一些细节:什么是根对象?GC 机制的触发时机?
  • 【SSL证书系列】操作系统如何保障根证书的有效性和安全
  • 【sql】按照数据的日期/天 ,对入库数据做数量分类
  • java加强 -File
  • MobiPDF:安卓设备上的专业PDF阅读与编辑工具
  • 【CustomPagination:基于Vue 3与Element Plus的高效二次封装分页器】
  • Spark的基础介绍
  • 性能比拼: Nginx vs. Envoy
  • AcroForm JavaScript Promise 对象应用示例: 异步加载PDF文件
  • YOLO v1:目标检测领域的革命性突破