MySQL三层B+树能存多少数据

ops/2025/1/3 6:05:04/

结论

bigint类型的索引(8字节),一条数据假设是1KB的话,

三层B+树 能存2000万条数据

 该题主要考察数据如何在B+树中存储的

 计算思路

1.计算叶节点的大小
2.计算子节点的个数,由此算出第三层叶子节点的个数(n*n)

  •  一个节点的子节点个数=页大小/(索引键大小+指向该子节点的指针大小)

3.计算每个叶子节点存储的数据行个数(多少条数据)
4.算出第三层能存储的总的数据行数


 b+树的存储结构 ★

根节点,非叶子节点,叶子节点

非叶子节点:存储索引键和子节点指针
叶子节点:完整的数据行

页 介绍

每个节点就是一个页,页是MySql InnoDB引擎中最小的存储单元,一个页里面有一个页目录,存储的是多个 索引键和子节点指针的组合

具体计算

1. 页大小(也就是B+树的一个节点):默认16KB,

16*1024=16384字节

2. 索引键和指针大小

为了方便计算假设索引键是BigInt类型即8字节,指针大小通常是6字节

3.计算扇出

扇出:非叶子节点能拥有的子节点的数量

扇出=页大小 /(索引键大小+指向子节点的指针大小)= 16384/(8+4)≈1170

4. 计算B+树的层级存储能力:

  • 根节点:根节点是一个非叶子节点,可以存储大约1170个索引键和指针
  • 第二层节点:每个根节点的指针可以指向一个第二层的节点,所以第二层最多有1170个节点。每个第二层节点也可以存储1170个指针。
  • 第三层节点(叶子节点):每个第二层节点的指针可以指向多个第三层节点(叶子节点)。因此,第三层的节点数是第二层节点数乘以每个第二层节点的指针数,即1170 * 1170。

5. 计算叶子节无序列表点可以存储的数据行数

  • 每叶子节点存储的数据行数=页大小 / 一条数据(行)大小

          为了方便计算假设一条数据占用1KB

  • 每叶子节点存储的数据行数=16KB/1KB= 16行

  • 而第三层的数据行数:总数据行数=总结点数*每个节点存储的数据行数=1170×1170×16=2,190,2400 行 ≈ 2千万条数据

http://www.ppmy.cn/ops/146413.html

相关文章

React Native中的核心技术概念

React Native是一个广泛应用于跨平台移动开发的框架,允许开发者使用JavaScript来编写原生应用。为了提高性能和扩展性,React Native在其架构中引入了多个先进的技术概念。本文将简要介绍React Native中的一些核心技术概念:Fabric、TurboModul…

maya 删除 Ctrl + Delete vs Delete

在 Autodesk Maya 中删除选定顶点的步骤: 1. 选择顶点: 进入顶点选择模式: 按 F9 键(切换到顶点选择模式)。 或者,在工具栏中点击顶点选择图标(顶点模式)。 在视图中选择您想要删…

抽象工厂模式详解

抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们的具体类。这种模式允许客户端使用抽象工厂接口来创建一族产品,而不必直接使用具体产品…

【大语言模型】DeepSeek与Kimi对论文内容理解的简单对比

【大语言模型】DeepSeek与Kimi对论文内容理解的简单对比 目录 文章目录 【大语言模型】DeepSeek与Kimi对论文内容理解的简单对比目录1. 前言技术方向产品形态用户市场未来潜力 2. DeepSeek文章标题摘要创新点算法模型实验效果总结推荐阅读指数 3. Kimi文章标题摘要创新点算法模…

【蓝桥杯——物联网设计与开发】拓展模块4 - 脉冲模块

目录 一、脉冲模块 (1)资源介绍 🔅原理图 🔅采集原理 (2)STM32CubeMX 软件配置 (3)代码编写 (4)实验现象 二、脉冲模块接口函数封装 三、踩坑日记 &a…

Ubuntu网络配置(桥接模式, nat模式, host主机模式)

windows上安装了vmware虚拟机, vmware虚拟机上运行着ubuntu系统。windows与虚拟机可以通过三种方式进行通信。分别是桥接模式;nat模式;host模式 一、桥接模式 所谓桥接模式,也就是虚拟机与宿主机处于同一个网段, 宿主机…

Android 学习小记1

目录 先介绍一下Android Studio 看看常见的模板 1. No Activity 2. Empty Activity 3. Gemini API Starter 4. Basic View Activity 5. Bottom Navigation Activity 6. Empty Views Activity 7. Navigation Drawer Views Activity 8. Responsive Views Activity 9. G…

Hutool 发送 HTTP 请求的几种常见写法

最简单的 GET 请求: String result HttpUtil.get("https://www.baidu.com");带参数的 GET 请求: // 方法1: 直接拼接URL参数 String result HttpUtil.get("https://www.baidu.com?name张三&age18");// 方法2: 使用 HashMap…