mysql是如何查询数据的?

本篇文章想从宏观的角度谈谈mysql究竟是如何定位到一条行记录的。

参考:从数据页的角度看 B+ 树 | 小林coding (xiaolincoding.com)

首先外层是一个b+树,b+树的每个节点都是一个数据页,数据页包含了文件头,页目录,行数据。

我们先通过b+树定位到一个数据页,然后数据页里面是如何查询的呢?他会对行数据进行分组(按主键大小用链表相连),查询时对组进行二分查找,对组内元素用遍历的方式。(不用担心一个组内的元素特别多,遍历会花很多时间,innodb规定一个组最多8条行记录),以这种方式我们把链表O(n)的时间复杂度,缩小到了近似O(logn)的时间复杂度。

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-16 09:28:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-16 09:28:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-16 09:28:01       82 阅读
  4. Python语言-面向对象

    2024-03-16 09:28:01       91 阅读

热门阅读

  1. Springboot如何判断pom.xml中是否加载了某个jar依赖

    2024-03-16 09:28:01       45 阅读
  2. C#简单聊天服务器程序

    2024-03-16 09:28:01       38 阅读
  3. 什么是智能合约,如何熟悉智能合约

    2024-03-16 09:28:01       41 阅读
  4. 【gpt实践】50个提升工作效率的GPT指令

    2024-03-16 09:28:01       36 阅读