从磁盘I/O角度看MySQL索引

从磁盘I/O角度看MySQL索引

一、为什么MySQL查询瓶颈是磁盘I/O

计算机的存储体系
由于MySQL数据存储保存在磁盘中,所以在查询时磁盘I/O是其主要查询性能瓶颈,而使用索引就可以减少磁盘I/O。

二、为什么使用索引查询性能会提高

正常查询的时间复杂度是O(N),因为可能需要全表查询遍历才可以查询到。

  1. 先从数据结构角度看,MySQL中主要是Btree索引,
    以下表为例
    创建一张表
    保存的数据
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MySQL索引是一种用于提高数据库查询性能的数据结构,可以加速数据的查找和访问。磁盘预读是指在磁盘读取数据时,不仅仅读取当前需要的数据,还会预先读取一些邻近的数据,并将其存储在内存中,以便提高后续的查询效率。 在MySQL中,磁盘预读可以通过将数据分为固定大小的块(页),以页为单位进行数据交换来实现。数据库系统会将索引的节点大小设置为页的大小,这样一次I/O操作就可以完全载入一个节点,并且可以利用预读特性,预先载入相邻的节点。这样做可以减少磁盘I/O的频率,提高查询性能。 具体到MySQL的InnoDB引擎中,它的B-Tree索引分为主索引和辅助索引。主索引是聚簇索引,叶子节点的data域记录着完整的数据记录,而辅助索引只包含索引字段和相应的主键值。因为一个表只能有一个聚簇索引,所以只有主索引才能实现聚簇索引的特性。 综上所述,MySQL索引利用磁盘预读特性,通过将数据分块并以页为单位进行交换,提高了查询性能。在InnoDB引擎中,主索引是聚簇索引,可以进一步优化查询效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL](https://blog.csdn.net/github_37002236/article/details/82811990)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值