当前位置: 首页 > article >正文

mysql数据库中,一棵3层的B+树,假如数据节点大小是1k,那这棵B+可以存多少条记录(2100万的由来)

在MySQL中,3层的B+树可以存储的数据量取决于多个因素,包括页大小、每行数据的大小以及索引项的大小。以下是一个详细的计算过程:

一、假设条件

  1. 页大小:在InnoDB存储引擎中,B+树的每个节点(页)大小通常是16KB。
  2. 索引项大小索引项的大小取决于主键和指针的大小。假设主键为8字节,指针为6字节,则每个索引项的大小约为14字节。
  3. 数据行大小:每行数据的大小会影响叶子节点能存储的数据行数。

二、计算过程

  1. 计算分支因子

    • 分支因子是指每个非叶子节点可以存储的指针数量。
    • 分支因子 = 节点大小 / 单个索引项大小 = 16KB / 14B ≈ 1170。
  2. 计算叶子节点数量

    • 根节点最多存储1170个指针,指向第二层的节点。
    • 每个第二层节点也最多存储1170个指针,指向第三层的叶子节点。
    • 因此,第三层(叶子节点层)的节点数量为 1170 × 1170 = 1,368,900。
  3. 计算数据行总数

    • 叶子节点存储实际的数据行指针。
    • 如果每行数据为1KB,则每个叶子节点最多存储 16KB / 1KB = 16 行数据。
    • 因此,数据行总数 = 1,368,900 × 16 = 21,902,400 行。

三、其他情况

  • 如果每行数据大小减小,比如每行仅占0.5KB,则一个叶子节点可以存储 16KB / 0.5KB = 32 行数据,数据行总数会相应增加。
  • 如果每行数据更大,比如占用4KB,则一个叶子节点仅能存储 16KB / 4KB = 4 行数据,总行数会相应减少。

四、总结

在MySQL的3层B+树中,具体能存储的数据量取决于页大小、每行数据大小和索引项大小。在典型情况下,3层B+树可以存储约几千万行数据(如2000万到4000万行,具体取决于每行数据的大小)。对于更大的数据集,B+树的高度可能会增加,但通常MySQL的B+树高度不会超过4层。

请注意,以上计算是基于一些假设条件的,实际存储能力可能会因具体的数据库配置和表结构而有所不同。


http://www.kler.cn/a/454501.html

相关文章:

  • 【MySQL】SQL 优化经验
  • 【漏洞复现】灵当CRM datapdf.php 任意文件读取漏洞
  • apt和apt-get软件包管理工具-debian
  • 在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)
  • [论文笔记] 从生成到评估:LLM-as-a-judge 的机遇与挑战
  • 企业销售人员培训系统|Java|SSM|VUE| 前后端分离
  • 01 Oracle 基本操作
  • mysql高版本导入到低版本
  • 解析 Facebook:社交网络的影响力与挑战
  • Android 之 Activity 的启动模式(launchMode)
  • flask后端开发(10):问答平台项目结构搭建
  • dockerfile文档编写(2):docker pull、apt install和pip镜像加速
  • 模拟双目标点成像:如何使用Python实现不同波前调制和成像算法
  • Sentinel 学习笔记3-责任链与工作流程
  • 关于分布式数据库需要了解的相关知识!!!
  • 【NIFI】实现HANA->ORACLE数据同步
  • SQLMAP注入之MySQL注入总结
  • Windows脚本清理C盘缓存
  • 电脑提示报错NetLoad.dll文件丢失或损坏?是什么原因?
  • (亲测)frp对外提供简单的文件访问服务-frp静态文件效果
  • STUN服务器实现NAT穿透
  • JSON 系列之2:JSON简单查询
  • Java中三大构建工具的发展历程(Ant、Maven和Gradle)
  • Vue中动态样式绑定+CSS变量实现切换明暗主题功能——从入门到进阶
  • 如何利用Python爬虫精准获取苏宁易购商品详情
  • K8s DaemonSet的介绍