首页 > 其他分享 >DBA笔记-第八部分

DBA笔记-第八部分

时间:2024-07-27 12:54:11浏览次数:10  
标签:字节 记录 DBA 54 第八 笔记 024 索引 节点

出道关于innodb存储的计算题,来分析为什么数据量不影响索引查询速度:

有一个表t

主键为a 大小为8字节

每行数据300个字节,

每页大小能存16k

那么 在b+树高度为123时

一页存放的记录数

B+ 树计算(使用 8 字节指针)

数据基础
  • 每行记录的大小:300 字节
  • 每页的大小:16,384 字节(16KB)
  • 主键的大小:8 字节
  • 指针的大小:8 字节
  • 每个索引项的总大小

    每个索引项的大小=主键的大小+指针的大小=8+8=16 字节每个索引项的大小=主键的大小+指针的大小=8+8=16 字节

计算 B+ 树不同高度下的记录数
高度为 1
  • 叶子层:16384/300=54,每页能存放 54 条记录。

    总记录数:每页能存放 54 条记录

高度为 2
  • 第一层(根节点):16384/(8+8)=1024,可以存放 1,024 个索引项(每个索引项指向第二层的节点)。

  • 第二层(叶子节点):每个叶子节点能存放 54 条记录。

    总记录数

    总记录数=1,024(根节点能存放的索引项数)×54(每个叶子节点的记录数)=55,296总记录数=1,024(根节点能存放的索引项数)×54(每个叶子节点的记录数)=55,296

高度为 3
  • 第一层(根节点):可以存放 1,024 个第二层节点。

  • 第二层:每个第二层的节点可以存放 1,024 个索引项,每个第二层节点指向一个叶子节点。

  • 第三层(叶子节点):每个叶子节点能存放 54 条记录。

    总记录数

    总记录数=1,024×1,024×54=55,296,000总记录数=1,024×1,024×54=55,296,000

总结

在考虑 8 字节指针大小的情况下,B+ 树在不同高度下的记录数为:

  • 高度为 1:每页能存放 54 条记录
  • 高度为 2:总记录数为 55,296 条记录
  • 高度为 3:总记录数为 55,296,000 条记录

根据这个例子说明了一个问题,假设一块最差的硬盘一秒钟的I/O是一千次,更别提固态硬盘的速度了,索引搜索高度为3的数据,需要0.003秒,高度为4也就0.004秒,所以数据量不影响索引的查询速度,而且一般来说B+树高度不超过五,因为达到5就有五百亿的数据量,还是高度为4的情况较多。

标签:字节,记录,DBA,54,第八,笔记,024,索引,节点
From: https://blog.csdn.net/etinemark/article/details/140717987

相关文章

  • Java类加载器实现机制详细笔记
    1.类加载器的基本概念类加载器(ClassLoader):在Java中,类加载器负责将Java类动态加载到JVM中。它是实现动态类加载机制的核心组件,对于开发复杂应用程序(如插件系统、模块化设计等)至关重要。2.类加载过程加载(Loading):从文件系统或网络读取.class文件,创建包含类数据的Class对象......
  • 读书笔记-《从码农到工匠》+ 《程序员的底层思维》
    思想很重要。在晚上睡不着的时候就刷到了这本《程序员的底层思维》看了下目录。就下单了。作者是阿里巴巴的大佬。已经实现财富自由了吧。要学习的思维有哪些呢。第一就是抽象了。抽离+具象。抽象越高。挣的越多。哈哈。金字塔、分类、层次、分治、简单、成长(这个思维对人生......
  • FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有于2017年推出的SRT协议,相比常见的RTMP协议,SRT协议具有更低的延迟,并且消除了卡帧、抖动等花屏现象。腾讯视频云已经引入了SRT协议,在实践......
  • kettle从入门到精通 第八十一课 ETL之kettle kettle中的json对象字段写入postgresql中
    1、上一节可讲解了如何将json数据写入pg数据库表中的json字段,虽然实现了效果,但若客户继续使用表输出步骤则仍然无法解决问题。正确的的解决方式是设置数据库连接参数stringtype=unspecified2、stringtype=unspecified参数的作用:当设置为 unspecified 时,pgJDBC驱动将根据数......
  • kettle从入门到精通 第八十课 ETL之kettle kettle中的json对象字段写入postgresql中的
    场景:源数据库表为mysql的其中有json字段,通过kettle查询出来插入到目标数据库postgresql中,对应的表中也有json字段。。但是报错,提示kettle查询出来是varchar的的字段,无法插入到目标数据库中。1、创建测试表。CREATETABLEt3(idint,nameJSON);2、测试mysql......
  • LCA学习笔记
    LCA\(\textbf{LCA=LowestCommonAncestor}\)即最近公共祖先下文以\(\textbf{LCA(a,b)表示节点a与节点b的最近公共祖先}\)F1:暴力算法步骤:(1)求出每个节点的深度(\(size\))(2)询问两个点是否重合,若重合,则\(\textbf{LCA(a,b)=当前重合的节点}\)(3)否则,选择\(\textbf{max(size[a]......
  • 轻量级图像识别算法笔记(一)
    轻量级图像识别算法一、什么是轻量级图像识别算法?为什么要用轻量级图像识别算法?什么是轻量级图像识别算法?​轻量级识别算法是指那些设计和优化以在资源受限环境中高效运行的机器学习和深度学习算法。为什么要使用轻量级图像识别算法?设备限制:很多实际应用场景中,嵌入式......
  • 算法笔记|Day8字符串II
    算法笔记|Day8字符串II☆☆☆☆☆leetcode151.翻转字符串里的单词题目分析代码☆☆☆☆kamacoder55.右旋字符串(待补充)题目分析代码☆☆☆☆☆leetcode28.实现strStr()题目分析代码☆☆☆☆☆leetcode459.重复的子字符串题目分析代码☆☆☆☆☆leetcode151......
  • MySQL笔记3——高级数据查询语句DQL
    多表联查多表联查可以通过连接运算实现,即将多张表通过主外键关系关联在一起进行查询。下图提供了多表联查时用到的数据库表之间的关系。等值查询和非等值查询非等值查询:SELECT*FROM表1,表2等值查询:SELECT*FROM表1,表2WHERE表1.字段1=表2.字段2...其中:与单表查......
  • JS笔记第八期(定时器的使用)—实现简易动画效果
    一、定时器 定时器JS执行速度非常的快,若希望程序每间隔一段时间执行异常,可以使用定时器setInterval()  定时调用,可以将函数每隔一段时间调用一次 参数:1.回调函数,该函数每隔一段时间执行一次       2.每次回调函数的间隔时间,单位为毫秒,会返回一个Number类......