Mysql优化之索引相关介绍(笔记)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: MySQL的InnoDB存储引擎中,索引节点默认大小为16KB(16384字节)。查询每个节点大小可执行`SHOW GLOBAL STATUS LIKE 'Innodb_page_size';`。索引节点大小影响B+树的效率,更高的层数意味着更多的I/O操作。当数据量超过2000万条时,建议分表以减少查询延迟和I/O次数。B+树高度为3时,根据节点数据结构,可以计算出能存放的数据量。

Mysql索引节点默认大小


如何查询每个节点的大小


show global status like 'Innodb_page_size';


[索引节点默认大小]





16384/1024=16,节点的默认大小为16KB,这个值是mysql经过多次试验出的一个理想值。
如果将这个值设置过大,可能会影响磁盘IO效率
如果将这个值设置过小,则索引能存放的数据响应就减少,相同的数据量情况下,会增加索引树的高度,从而使检索效率下降

如何设置Innodb_page_size大小


可通过修改my.ini配置文件,将innodb_page_size=设置的值更改

B+树索引高度为3的情况下,可以存放多少个数据?而不丧失检索效率


[示意图]




如果所示:
节点中,
如果索引是BIGINT字段(也就是我们常用的id),BIGINT为8个字节,指针地址为6个字节。一个节点的大小为16KB,也就是16384byte。
则头部节点能存放 16384 / (8+4) = 1170
二层节点一样,也是 16384 / (8+4) = 1170
三层节点,由于存放data,而日常中,data大约为1KB,则该节点能存放 16 / 1 = 16 条

所以B+树在高度为3的情况下,能存放 1170 * 1170 * 16 = 21902400个数据。
在不超过2000W条数据的情况下,mysql通过三次二分查找就能快速定位到检索的数据。

为什么mysql建议数据量超过2000W需要分表?

如果数据量增加,则索引高度为变成4层,
结果:
  1.四层高度会增加检索I/O次数,检索效率降低
  2.索引需要更多的时间来构建和维护
  3.这也是为什么mysql建议超过2000W条数据需要分表的原因。

三层高度的情况下,需要IO几次?


mysql默认会把头部节点主动加载到内存中,则三层高度情况下,只需要加载二层和三层,所以需要I/O两次。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2天前
|
关系型数据库 MySQL 数据库
数据迁移脚本优化过程:从 MySQL 到 Django 模型表
在大规模的数据迁移过程中,性能问题往往是开发者面临的主要挑战之一。本文将分析一个数据迁移脚本的优化过程,展示如何从 MySQL 数据库迁移数据到 Django 模型表,并探讨优化前后的性能差异。
|
2天前
|
存储 关系型数据库 MySQL
mysql optimizer_switch : 查询优化器优化策略深入解析
mysql optimizer_switch : 查询优化器优化策略深入解析
|
2天前
|
关系型数据库 MySQL 数据库
MySQL索引优化:深入理解索引合并
MySQL索引优化:深入理解索引合并
|
3天前
|
存储 关系型数据库 MySQL
MySQL索引详解
MySQL索引详解
|
3天前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之 MySQL数据库中,执行delete命令删除数据后,存储空间通常不会立即释放,该如何优化
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
3天前
|
关系型数据库 MySQL 测试技术
深入探索MySQL 8:隐藏索引与降序索引的新特性
深入探索MySQL 8:隐藏索引与降序索引的新特性
|
3天前
|
存储 关系型数据库 MySQL
架构面试题汇总:mysql索引汇总(2024版)
架构面试题汇总:mysql索引汇总(2024版)
|
3天前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之mysql迁移后查询不走索引了,该如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
3天前
|
存储 SQL 关系型数据库
|
2天前
|
存储 关系型数据库 MySQL
MySQL 索引优化:深入探索自适应哈希索引的奥秘
MySQL 索引优化:深入探索自适应哈希索引的奥秘