Mysql性能优化之自适应索引

news2024/11/13 21:52:05

自适应索引

是什么

自适应哈希索引是 InnoDB 存储引擎为了提高特定类型查询性能而自动构建的一种内存中的哈希索引结构。它可以根据查询模式和数据访问频率自动调整,以优化数据库的性能。

与B+Tree的区别

与传统的 B-tree 索引不同,哈希索引使用哈希函数将索引键值映射到哈希表中,从而实现了 O(1) 时间复杂度的快速查找。这意味着在等值查询场景下,自适应哈希索引能够提供比 B-tree 索引更快的查找速度。

原理

自动和动态的:InnoDB 会根据查询模式和数据访问频率自动决定是否构建哈希索引,并且会根据数据的变化和查询模式的变化动态地调整哈希索引。经常访问的二级索引数据会自动被生成到hash索引里面去(最近连续被访问三次的数据),自适应哈希索引通过缓冲池的B+树构造而来,因此建立的速度很快。
在这里插入图片描述

局限

哈希索引并不适用于所有查询场景。由于哈希索引不存储数据的物理顺序信息,因此它无法支持范围查询和排序操作。

成本

  • 内存消耗: 自适应哈希索引完全在内存中构建,因此需要足够的内存资源。在高负载下,它可能会消耗大量的内存。为了平衡性能和资源消耗,InnoDB 存储引擎会根据查询模式和数据访问频率动态地构建和维护自适应哈希索引。
  • 不可预测性:由于是基于运行时查询模式的,所以哈希索引的存在和组成是不可预测的。
  • 不适用于所有查询:自适应哈希索引主要优化等值查询,对于范围查询或排序操作没有帮助。
  • hash自适应索引会占用innodb buffer pool;

优点

  • 自动优化:自适应哈希索引会自动构建和维护,不需要用户显式创建或管理。
  • 性能提升:对于某些等值查询,自适应哈希索引可以显著减少查找时间,哈希索引,查询消耗 O(1)
  • 降低对二级索引树的频繁访问资源。

利用自适应索引优化性能

  • 监控自适应哈希索引的使用情况 通过执行SHOWENGINEINNODBSTATUS命令,可以查看自适应哈希索引的使用情况,包括索引的大小、构建速度以及查询性能
    等。这些信息可以帮助你了解自适应哈希索引在实际应用中的效果,并根据需要进行调整。
    在输出的SEMAPHORES部分中
    1
    mysql> show engine innodb status\G
    2
    Hash table size 34673, node heap has 0 buffers)
    4 0.00 hash searches/s, 0.00 non-hash searches / S
    字节为单位,占用内存空间总量,通过hash searches/s、non-hash searches/s算自适应hash索引带来的收益以及付出,确定是否开启自适应hash索引
  • 调整内存配置 根据系统的实际情况和查询需求,合理调整InnoDB存储引擎的内存配置参数,如innodb_buffer_poolsize和innodb_adaptive_hash_index_partitions等。这些参数的设置将直接影响自适应哈希索引的构建和维护效果。
  • 定期维护数据库 定期对数据库进行维护操作,如优化表(OPTIMIZETABLE)、重建索引(REBUILDINDEX)等,可以保持数据库的良好状态,提高自适应哈希索引的使用效果。

欢迎技术交流
在这里插入图片描述

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

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

相关文章

基于Java的旅游服务管理系统的设计与实现(论文+源码)_kaic

摘 要 伴随着人们生活水平的提高,服务行业也得到了飞速发展。人们对旅游活动也越来越重视。很多旅游爱好者以及生活压力过大的人都会选择周末,节假日或自己休闲时外出旅游,换种环境来放松心情,缓解工作压力,尽享别样生…

GHA文章是AI文章吗?

对于想做外贸的客户来说,谷歌SEO成为了每个网站的必攻课题,而在SEO策略中,内容质量至关重要,而现在,ai产业的发达也让不少人看见出海的希望,因为内容可以让ai生成,那么,现在火爆seo圈…

Leetcode199二叉树的右视图(java实现)

今天我们分享的题目是199题,题目描述如下: 那么本道题的解题思路呢就是使用层序遍历,每次将每层中的最后一个元素加入到我们的集合中。 本道题目和之前的层序遍历二叉树的题目很像,但是需要注意的细节。那么我会在代码中指出。 代…

JSON处理库 -- Fastjson

文章目录 一、json格式1.1 用途1.2 语法1.3 常见格式 二、fastjson常用类2.1 JSONObject2.2 JSONArray 三、序列化和反序列化3.1 默认序列化与反序列化3.2 序列化的扩展3.3 自定义序列化SerializeFilter3.4 JSONField 注解3.5 复习Jackson 一、json格式 1.1 用途 一种轻量级的…

SpringBoot3集成Spring Authorization Server和Spring Cloud Gateway实现网关统一认证

1. 概述 在微服务开发过程中,通常都会使用Spring Cloud Gateway构建统一的API网关,在访问微服务之前都会先校验访问者是否有权限访问资源,实现方式有很多,这里主要介绍Spring Cloud Gateway集成OAuth2.1如何实现网关统一认证。 S…

公众号里的产品宣传册是如何制作的?

​随着微信的普及,越来越多的企业和个人开始关注公众号,希望通过这个平台宣传自己的产品和服务。然而,你是否想过,那些公众号里精美的产品宣传册是如何制作出来的呢?今天,就让我来带你了解公众号产品宣传册…

解决maven中阿里云镜像仓库无法下载源码的问题

解决 Sources not found for: org.springframework.kafka:spring-kafka:3.2.3 的问题 我们在写代码的时候,经常需要看源码,但是当我们在 idea 中下载源码的时候,提示我们: Sources not found for: org.springframework.kafka:sp…

EmguCV学习笔记 C# 7.2 特征点检测

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

两个月冲刺软考——求解关系模式达到了第几范式题型(例题+讲解,一看就会)

目录 1.假设一对多联系不转换为一个独立的关系模式的话,那么生成的关系模式应该是将“一”的那一方的主键加入到“多”的一方的关系模式中。 2.求解关系模式达到了第几范式题型 1.假设一对多联系不转换为一个独立的关系模式的话,那么生成的关系模式应该…

10 款企业级项目管理系统是你理想中的那一款吗

市面上主流的 10 款企业级项目管理系统推荐:PingCode、Worktile、泛微 e-office、致远OA、Gitee、Asana、Trello、Basecamp、Monday.com、Smartsheet。 在选择合适的企业内部项目管理系统时,许多企业面临着如何找到一个既能满足当前需求,又能…

【生日视频制作】一群美女游轮船挥手AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程一群美女游轮船挥手AE模板修改文字生成器素材 怎么如何做的【生日视频制作】一群美女游轮船挥手AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片或文字 渲染出视频

24年一级消防工程师报名流程图解(建议电脑)

报考流程: 1、登录中国人事考试网,点击网上报名,登录帐户和密.码,找到“一级消防工程师”的报考入口,选择报考省份,进入在线报名界面。 2、报考人员阅读《承诺制告知书》和《报名须知》后,点击“…

【精选】基于Python的电影推荐系统的设计与实现(全网第一无二,最新定制)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

后台框架-统一异常管理

搭建后台框架全局异常管理是一个很重要的部分,好在SpringBoot提供了很好的处理方法 使用ControllerAdvice ControllerAdvice是Spring MVC中的一个全局异常处理注解,它允许在一个地方集中处理所有控制器抛出的异常。通过使用ControllerAdvice&#xff0…

资源不是问题,网盘搜索神器!极空间部署聚合搜索工具『爱盼』

资源不是问题,网盘搜索神器!极空间部署聚合搜索工具『爱盼』 哈喽小伙伴们好,我是Stark-C~ 经常分享一些NAS的玩法和攻略,但是被问及最多的还是资源问题,我在那里下载啊?我在那里看啊?等等...…

LLM系列 | 36:Google最新开源大模型:Gemma 2介绍及其微调(下篇)

引言 环境安装 数据准备 下载 处理 模型训练 模型inference 结果 gemma-2-9b gemma-2-9b-it 引言 低头观落日,引手摘飞星。 小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:卖黑神话的小女孩。本文紧接前文Google最新开源大…

HarmonyOS NEXT未成年人模式无缝联动所有应用,过滤非适龄内容

背景 随着消费电子产品和移动互联网的普及,未成年人互联网普及率96.8%,超过80%的未成年人都拥有自己的上网设备,而如何引导孩子正确上网一直是家长们的担忧。市场上很多电子设备、系统推出了一些未成年人管控能力,却需要家长到各…

前端技术(六)—— AJAX详解

一、原生 AJAX 1. AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML,就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求,最大的优势:无刷新获取数据。 AJAX 不是新的编程语言,而是一种将现有的标准组…

【练习3】点击消除

地址:点击消除_牛客题霸_牛客网 (nowcoder.com) 分析: 消除的是“相邻且相等”的数,可以考虑用栈。这里使用StringBuilder来代替栈,好处是StringBuilder可以实现尾插和尾删的操作。 public class Main {public static void main(S…

Caching介绍

缓存(Caching)是计算机系统中一个非常关键且常用的技术,用于提高数据访问速度和系统性能。在Java编程中,缓存同样扮演着重要角色,特别是在处理大量数据、频繁访问数据库或远程服务时。 缓存的基本原理 缓存的基本原理是…