返回顶部
首页 > 资讯 > 数据库 >解读MySQL中一个B+树能存储多少数据
  • 661
分享到

解读MySQL中一个B+树能存储多少数据

MySQL B+树B+树存储数据MySQL B+树存储数据 2023-02-14 17:02:11 661人浏览 八月长安
摘要

目录Mysql中一个B+树能存储多少数据mysql聚簇索引的存储结构Mysql中B树与B+树的区别B树B+树B树与B+树的区别总结MySQL中一个B+树能存储多少数据 MySQL聚簇索引的存储结构 MySQL中Inno

MySQL中一个B+树能存储多少数据

MySQL聚簇索引的存储结构

解读MySQL中一个B+树能存储多少数据

MySQL中InnoDB页的大小默认是16k。也可以自己进行设置。(计算机在存储数据的时候,最小存储单元是扇区,一个扇区的大小是 512 字节,而文件系统(例如 XFS/EXT4)最小单元是块,一个块的大小是 4KB。

InnoDB 引擎存储数据的时候,是以页为单位的,每个数据页的大小默认是 16KB,即四个块。)

在B+树中,一个结点就是一页。非叶子结点由主键值和一个指向下一层的地址的指针组成的组合组成。叶子结点中由一组键值对和一个指向该层下一页的指针组成,键值对存储的主键值和数据。

由存储结构,可以大概计算出一个B+树能存储的数据数量。

指针在InnoDB中为6字节,设主键的类型是bigint,占8字节。一组就是14字节。

计算出一个非叶子结点可以存储16 * 1024 / 14 = 1170个索引指针。

假设一条数据的大小是1KB,那么一个叶子结点可以存储16条数据。

得出两层B+树可以存储1170 x 16 = 18720 条数据。

三层B+树可以存储1170 x 1170 x 16 = 21902400条数据。

MySQL中B树与B+树的区别

B树

B树和B+树都是应用在数据库索引上,可以认为是m叉的多路平衡查找树,但是理论上讲,二叉树的查找速度和比较次数都更小,为什么不用二叉树呢?

这是因为我们要考虑磁盘io的影响,它相对于内存来说是很慢的,数据库索引是存储在磁盘上的,当数据量很大时,就不能把整个索引全部加载到内存中,只能逐一加载每一个磁盘页(对应索引树的节点)。

所以我们要减少IO的次数,对于树来说,IO次数就是树的高度,而“矮胖”就是B树的特征之一。

B树的特征:

  • 关键字集合分布在整颗树中;
  • 任何一个关键字出现且只出现在一个结点中;
  • 搜索有可能在非叶子结点结束;
  • 其搜索性能等价于在关键字全集内做一次二分查找;

1

B+树

B+树是B树的变体,是一种查询性能更好的B树。B+树是一种平衡查找树在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶节点中,各叶结点指针进行连接。

B+树的特征:

  • 有n棵子树的非叶子结点中含有n个关键字(b树是n-1个),这些关键字不保存数据,只用来索引,所有数据都保存在叶子节点(b树是每个关键字都保存数据)。
  • 所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。
  • 所有的非叶子结点可以看成是索引部分,结点中仅含其子树中的最大(或最小)关键字。
  • 通常在b+树上有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点。
  • 同一个数字会在不同节点中重复出现,根节点的最大元素就是b+树的最大元素。

6

B树与B+树的区别

  • B树的中间节点保存节点和数据,B+树的中间节点不保存数据,数据保存在叶子节点中;所以磁盘页能容纳更多的节点元素,更“矮胖”;
  • B树的查找要只要匹配到元素,就不用管在什么位置,B+树查找必须匹配到叶子节点,所以B+树查找更稳定;
  • 对于范围查找到说,B树要从头到尾查找,而B+树只需要在一定的范围内的叶子节点中查找就可以;
  • B+树的叶子节点通过指针连接,从左到右顺序排列;
  • B+树的非叶子节点与叶子节点冗余;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

您可能感兴趣的文档:

--结束END--

本文标题: 解读MySQL中一个B+树能存储多少数据

本文链接: https://lsjlt.com/news/196060.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 解读MySQL中一个B+树能存储多少数据
    目录mysql中一个B+树能存储多少数据MySQL聚簇索引的存储结构MySQL中B树与B+树的区别B树B+树B树与B+树的区别总结MySQL中一个B+树能存储多少数据 MySQL聚簇索引的存储结构 MySQL中Inno...
    99+
    2023-02-14
    MySQL B+树 B+树存储数据 MySQL B+树存储数据
  • MySQL InnoDB引擎——三层B+树可以存储多少数据量
    先说结论: 3层B+树大概可以存: 主键为bigint:约2000w主键为int:约4000w *备注: 在《阿里开发手册》中建议,单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表,如果预计三年后数据量根本达不到...
    99+
    2023-08-31
    B+树 三层 数据量 mysql innodb
  • InnoDB一棵B+树可以存放多少行数据?
    一个问题? InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万。为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。 我们都知道计算机在存储数据的时候,有...
    99+
    2017-11-19
    InnoDB一棵B+树可以存放多少行数据?
  • InnoDB一棵B+树可以存放多少行数据
    InnoDB一棵B+树可以存放多少行数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一个问题?InnoDB一棵B+树可以存放多少行数据?...
    99+
    2024-04-02
  • mysql数据库能储存多少条数据
    小编给大家分享一下mysql数据库能储存多少条数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL是中小型网站普遍使用的...
    99+
    2024-04-02
  • mysql一张表最多能存多少数据
    mysql单表的存储上限受操作系统、文件系统和存储引擎的影响:在32位系统上,上限约为4gb。在64位系统上,理论上限为16eb。innodb存储引擎由多个段和页组成,最多可有65,53...
    99+
    2024-08-01
    mysql
  • mysql一个表可以存多少条数据
    mysql表的存储容量取决于表结构、存储引擎和服务器配置。最大行数为922亿,最大表大小为64tb(非压缩)或32tb(压缩)。实际限制和性能考虑会影响实际容量。 MySQL表中可存储...
    99+
    2024-04-22
    mysql
  • MySQL一张表能存的数据是多少
    这篇“MySQL一张表能存的数据是多少”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MyS...
    99+
    2023-02-02
    mysql
  • 一文详解MySQL text能存多少个字符
    目录前言一、字符集字符长度和字节长度二、验证案例(一)表结构DDL和Java Entity(二)Java代码三、结论总结前言 今天测试给提了个bug, 排查原因是插入数据时字段长度不够导致。我使用的是mysql8的数据库...
    99+
    2023-01-13
    mysql text字符 mysql字符存储
  • 一文详解MySQL text能存多少个字符
    目录前言一、字符集字符长度和字节长度二、验证案例(一)表结构DDL和Java Entity(二)Java代码三、结论总结前言 今天测试给提了个bug, 排查原因是插入数据时字段长度不...
    99+
    2023-01-13
    mysql text字符 mysql字符存储
  • 阿里云数据库MySQL一个月多少钱?详细解读
    随着云计算技术的飞速发展,越来越多的企业开始选择将业务迁移到云上。其中,阿里云数据库MySQL作为一种高性能、高可用、高可靠的数据库解决方案,已经赢得了众多企业的青睐。那么,阿里云数据库MySQL一个月多少钱呢?本文将详细解读这个问题。 阿...
    99+
    2023-12-10
    一个月 阿里 多少钱
  • 面试官问我为啥B+树一般都不超过3层?3层B+树能存多少数据?redo log与binlog的两阶段提交?
    我今天逛了一下CSDN,又发现了一条显眼的数据,大概是说3层B+树足以容纳2000w条数据。我当时就蒙了,3层对2000w,心想这B+树也太厉害了吧,由此勾起了我求知的欲望,我一定要搞明白他这2000w是怎么来的。 重中之重 MySQL的执...
    99+
    2023-09-02
    mysql 数据库 面试 b树
  • mysql中varchar(50)能存储多少汉字
    mysql 中 varchar(50) 类型可存储最大 25 个汉字,具体受字符编码影响。例如,使用 utf-8 编码时可存储 16 个汉字,使用 gbk 编码时可存储 25 ...
    99+
    2024-05-01
    mysql
  • 浅谈mysql一张表到底能存多少数据
    程序员平时和mysql打交道一定不少,可以说每天都有接触到,但是mysql一张表到底能存多少数据呢?计算根据是什么呢?接下来咱们逐一探讨 知识准备 数据页 在操作系统中,我们知道为了...
    99+
    2024-04-02
  • MySQL中InnoDB索引数据结构(B+树)详解
    mysql的innodb的索引的B+树逐步讲解 B树B+树B树和B+树的不同点聚集索引 VS 非聚集索引总结(面试题)1.为什么不使用二叉查找树?2.为什么不使用平衡二叉树?3.为什么不使用B树?4.为什么MySQL选择B+树做索引...
    99+
    2023-08-17
    b树 数据结构 mysql 数据库
  • oracle数据库一张表能存多少数据
    oracle 表的存储容量取决于表空间类型、数据块大小、行大小和空闲块空间。理论最大值为:块表空间约 8tb,行表空间约 281tb。但实际限制受操作系统、性能和可用存储空间影响。根据特...
    99+
    2024-05-11
    oracle
  • 面试提问mysql一张表到底能存多少数据
    目录前言1、知识准备1.1、数据页1.2、索引结构(innodb)2、具体计算方法2.1、根节点计算2.2、其余层节点计算3、总结前言 程序员平时和mysql打交道一定不少,可以说每...
    99+
    2024-04-02
  • 你的mysql到底能存多少数据呢?
    前言 参考借鉴文章 我说MySQL每张表最好不超过2000万数据,面试官让我回去等通知? 这里自己在总结一下,原因是相关知识欠缺,看别人的文章研究很久才弄明白,所以这里记录一些心得。 作者:阿杆 ...
    99+
    2023-09-08
    mysql java 数据库
  • 读取或存储DataFrames的数据到mysql中
    如何把DataFrames数据存入数据库中,以MySQL为例进行说明 保存DataFrames到数据库 1. 创建数据库连接 import pymysqlfrom sqlalchemy import ...
    99+
    2023-09-14
    mysql 数据库 python
  • redis一个实例能存key的数量是多少
    这期内容当中小编将会给大家带来有关redis一个实例能存key的数量是多少,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。redis中默认有编号0-15总共16个db,默认...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作