mysql索引机制实现及自适应hash索引

news2024/9/27 21:23:53

 

 

一、介绍  

哈希(hash)是一种非常快的查找方法,一般情况下查找的时间复杂度为O(1)。常用于连接(join)操作,如Oracle中的哈希连接(hash join)。

InnoDB存储引擎会监控对表上索引的查找,如果观察到建立哈希索引可以带来速度的提升,则建立哈希索引,所以称之为自适应(adaptive)的。

自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。而且不需要将整个表都建哈希索引,InnoDB存储引擎会自动根据访问的频率和模式来为某些页建立哈希索引。

自适应哈希索引经哈希函数映射到一个哈希表中,因此对字典类型的查询非常快,但是对于范围查找就无能为力了。

二、示例

三、限制

1.只能用于等值比较,例如=, <=>,in

2.无法用于排序

3.有冲突可能

4.Mysql自动管理,人为无法干预。

四、通过SHOW ENGINE INNODB STATUS 查看自适应哈希索引的使用情况

In MySQL 5.7, the adaptive hash index search system is partitioned. Each index is bound to a specific partition, and each partition is protected by a separate latch.

Partitioning is controlled by the innodb_adaptive_hash_index_parts configuration option. In earlier releases, the adaptive hash index search system was

protected by a single latch which could become a point of contention under heavy workloads. The innodb_adaptive_hash_index_parts option is set to 8 by default.

The maximum setting is 512.

The hash index is always built based on an existing B-tree index on the table. InnoDB can build a hash index on a prefix of any length of the key defined for the B-tree,

depending on the pattern of searches that InnoDB observes for the B-tree index. A hash index can be partial, covering only those pages of the index that are often accessed.

You can monitor the use of the adaptive hash index and the contention for its use in the SEMAPHORES section of the output of the SHOW ENGINE INNODB STATUS 

command. If you see many threads waiting on an RW-latch created in btr0sea.c, then it might be useful to disable adaptive hash indexing.

-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 94 merges
merged operations:
 insert 280, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 4425293, node heap has 1337 buffer(s)
174.24 hash searches/s, 169.49 non-hash searches/s

哈希索引只能用来搜索等值的查询,对于其他查找类型,如范围查找,是不能使用哈希索引的,因此这里出现no--hash searches的情况。

通过hash searches:non-hash searches可以大概了解使用哈希索引后的效率

 

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

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

相关文章

canopen11-sdo-40读取命令

源码 参考文件 1、SDO介绍 就对象而言,主机要访问节点词典的数据,因此主机是client客户端,节点是server服务器。上传与下载是对服务器来说的(这点和常识有点不太一样)。因此,上传指的是服务器发送数据给客户端,下载是客户端给服务器数据。 我们这里要用主机访问节点服…

Linux多进程编程之exec函数族使用

Linux多进程编程之exec函数族使用1.exec函数族是什么2.execl函数具体使用3.execlp4.exec后面不同字母所代表的含义1.exec函数族是什么 顾名思义&#xff0c;它并不只是一个函数&#xff0c;而是以exec开头的六个函数&#xff0c;并且是没有exec这个函数的&#xff08;就像TCP/…

几行代码演示linux kernel、libc、userSpace app的关系

问一&#xff1a;编译出来的Linux内核镜像(".\build\arch\arm64\boot\Image")&#xff0c;可以单独运行吗&#xff1f;答案是能&#xff0c;但是加载完就提示panic&#xff0c;然后死掉了。 原因是&#xff1a; 内核代码加载完后&#xff0c;一定要切换到低权限模式…

Wireshark TS | Packet Challenge 之 HTTP 案例分析

前言 来自于 Sharkfest Packet Challenge 中的一个数据包案例&#xff0c;Sharkfest 是 Wireshark 官方组织的一年一度的大会&#xff0c;致力于在 Wireshark 开发人员和用户社区之间分享知识、经验和最佳实践。印象中早期是一年一次&#xff0c;近几年发展成一年两次&#xf…

我的2022年终总结

目录 1 序 1 2 工作 1 3 业余 1 3.1 AI 1 3.2 数学小插曲 3 3.3 金融投资 3 4 生活 4 5 最后 4 1 序 老婆大人每年这个时候都要写年终总结&#xff0c;现在也正在写&#xff1b;CSDN也发起了年终征文活动&#xff1b;各大app也各种年度大数据总结。我好像还是第一次写年终总…

两两交换链表中的节点 -- 虚拟头节点

24两两交换链表中的节点 – 虚拟头节点 通过本题可以&#xff1a; 增加对虚拟头节点的理解。 加强对链表这一基本数据结构的基本操作的理解。 1. 交换过程&#xff1a; 如图&#xff0c;假设链表如图所示。 为了减少对头节点的单独讨论&#xff0c;这里采用虚拟头节点进行…

Allegro如何显示走线和铜皮的网络名操作指导

Allegro如何显示走线和铜皮的网络名操作指导 在做PCB设计的时候,如果可以实时看到走线和铜皮的网络名,对于设计有很大帮助,如下图 具体操作如下 选择Set-up-user preferences选择Display

Vue 总结一(简介 基本语法)

目录 Vue 是什么 与其它 JS 框架的关联 Vue 周边库 MVVM模型 怎么用 Vue模板语法有2大类&#xff1a; 数据绑定 data 事件 v-on methods 计算属性 computed 监视属性 watch computed和watch之间的区别&#xff1a; 条件渲染 v-if v-show Vue 是什么 一个动态构建用…

sql根据团队树一级一级汇总统计

1、需求描述 最近碰到了一个需求&#xff0c;是要统计各个团队的员工的销售金额&#xff0c;然后一级一级向上汇总。 架构团队树是类似于这种样子的&#xff0c;需要先算出每个员工的销售金额&#xff0c;然后汇总成上一级的团队金额&#xff0c;然后各个团队的销售总金额再往上…

京东技术发展简史

文章目录前言京东发展历程京东商城技术的演进京东自研技术分布式数据库StarDB京东云移动端Flutter在京东的实践大数据咚咚架构ShardingSphere京东人物参考“京东可以高速发展到今天的规模的原因&#xff0c;其中最核心的是坚持“倒三角”战略&#xff1a;建立出色的团队&#x…

转义字符与strlen(),sizeof()在一起的注意事项

转义字符与strlen(),sizeof() 1. 转义字符每个人都知道是怎么一回事儿&#xff0c;转义字符顾名思义就是转变意思。 2. 首先转义字符肯定是一个字符&#xff0c;不是两个字符&#xff0c;更不用说是数字了&#xff0c;就是字符。 3. 当用strlen()统计字符串长度时或者用sizeo…

2022年度回顾

这一年是不平凡的一年&#xff0c;换了公司&#xff0c;新公司频繁出差&#xff0c;去了临沂&#xff0c;去了河南&#xff0c;去了唐山&#xff0c;去了福鼎&#xff0c;当中最印象深刻的还是河南&#xff0c;项目万分火急&#xff0c;在疫情隔绝的10月份毅然决然的前往河南安…

如何稍微优雅滴完成博文访问计数[SpringBoot+redis+分布式锁]

文章目录前言背景朴素做法Redis方案流量统计接口演示自定义注解计数实现防刷加锁完整代码数据一致性分析自定义注解返回值分析解决方案总结前言 okey,我们来收尾一下&#xff0c;这公历纪年2022年12月31日。这是本年度的最后一篇博文。那么这篇博文主要是用来实现博文的一个访…

【LeetCode】被围绕的区域 [M](深度优先遍历)

130. 被围绕的区域 - 力扣&#xff08;LeetCode&#xff09; 一、题目 给你一个 m x n 的矩阵 board &#xff0c;由若干字符 X 和 O &#xff0c;找到所有被 X 围绕的区域&#xff0c;并将这些区域里所有的 O 用 X 填充。 示例 1&#xff1a; 输入&#xff1a;board [[&quo…

浅谈Flink批模式Adaptive Hash Join

Flink批Hash Join递归超限问题 随着Flink流批一体能力的迅速发展以及Flink SQL易用性的提升&#xff0c;越来越多的厂商开始将Flink作为离线批处理引擎使用。在我们使用Flink进行大规模join操作时&#xff0c;也许会发生如下的异常&#xff0c;导致任务失败&#xff1a; Hash j…

Es进阶检索

本文用到的测试数据及所有代码链接&#xff1a; https://blog.csdn.net/m0_62436868/article/details/128505566?spm1001.2014.3001.5501 1、SearchAPI ES 支持两种基本方式检索 : 一个是通过使用 REST request URI 发送搜索参数&#xff08;uri检索参数&#xff09; 另…

基于华为eNSP的中小企业办公园区网络规划与设计

目录一、需求分析&#xff08;一&#xff09;项目背景&#xff08;二&#xff09;网络业务需求&#xff08;三&#xff09;网络应用需求二、网络结构设计三、网络拓扑图四、网络设备基本配置五、项目测试结语运用到的技术有&#xff1a; 1、虚拟局域网&#xff08;VLAN&#xf…

人工智能--你需要知道的一切

人工智能--你需要知道的一切 人工智能是当今最受关注的技术之一。但它究竟是什么&#xff1f;你为什么要关心&#xff1f; 人工智能是当今最受关注的技术之一。但它到底是什么&#xff1f;你为什么要关心&#xff1f;在这里&#xff0c;我们将介绍你需要知道的关于人工智能的…

java开发的美妆化妆品电商商城系统

简介 Java基于ssm(可以转springboot项目哦)开发的美妆商城系统&#xff0c;主要是卖化妆品的系统&#xff0c;用户可以浏览商品&#xff0c;加入购物车&#xff0c;下单&#xff0c;在个人中心管理自己的订单。管理员可以管理自己的商品&#xff0c;发布商品&#xff0c;上下架…

2023年留学基金委(CSC)公派访问学者博士后项目选派办法及解读

2023年即将伊始。知识人网祝大家新年快乐&#xff0c;心想事成&#xff01;同时提醒申请者关注国家留学基金委&#xff08;CSC&#xff09;的申报政策。目前CSC官网已经发布了2023年公派访问学者、博士后的项目通知&#xff0c;知识人网小编现将其选派工作流程及选派办法原文转…