参考:
面试题:InnoDB中B+树有几层?_Running-Waiting的博客-CSDN博客_b+树有几层

mysql单表最多两千万条数据?

先说结论一般B+树高大约为1~3层(通过主键索引查询,通常磁盘io数为1~3次),可容纳记录数约2000w条

在 MySQL 中我们的 InnoDB 页的大小默认是 16k,当然也可以通过参数设置。
在查找数据时一次页的查找代表一次 IO,所以通过主键索引查询通常只需要 1~3 次 IO 操作即可查找到数据。

1、MySQL的InnoDB存储引擎的最小存储单元是页(大小默认是16k,可通过参数设置)。页可用于存放B+树叶节点数据,也可用于存放B+树非叶节点的 “键 + 指针”。
2、索引组织表通过非叶节点的 “二分查找” 法以及指针确定数据在下一层的哪个页中,进而再去叶节点的数据页中查找到所需数据。

一个非叶节点可容纳约1170个指针,这里假设一行记录数据大小为 1k,那么底层叶节点一页16k就能存16条记录。叶节点数 * 一个叶节点能存放的记录数 = 1170 * 16 = 18720条 记录数。具体推导过程如图:

同理可得:高度为3的B+树能存的记录数为:1170*1170*16=21902400,2190w条记录,约2000w条记录。

为什么MySQL用B+树而不用B树呢?

因为B树不管叶子节点还是非叶子节点,都会保存数据,这样导致在非叶子节点中能保存的指针数量变少(有些资料也称为扇出),指针少的情况下要保存大量数据,只能增加树的高度,导致IO 操作变多,查询性能变低。

总结:

  1. B+树叶子和非叶子结点的数据页都是16k,且数据结构一致,区别在于叶子节点放的是真实的行数据,而非叶子结点放的是主键和下一个页的地址。
  2. B+树一般有两到三层,由于其高扇出,三层就能支持2kw以上的数据,且一次查询最多1~3次磁盘IO,性能也还行。
  3. 存储同样量级的数据,B树比B+树层级更高,因此磁盘IO也更多,所以B+树更适合成为mysql索引。
  4. 索引结构不会影响单表最大行数,2kw也只是推荐值,超过了这个值可能会导致B+树层级更高,影响查询性能。
  5. 单表最大值还受主键大小和磁盘大小限制。

Innodb引擎中B+树一般有几层?能容纳多少数据量?相关推荐

  1. 为什么 select count(*) from t,在 InnoDB 引擎中比 MyISAM 慢?

    统计一张表的总数量,是我们开发中常有的业务需求,通常情况下,我们都是使用 select count(*) from t SQL 语句来完成.随着业务数据的增加,你会发现这条语句执行的速度越来越慢,为什 ...

  2. 聊一聊 InnoDB 引擎中的索引类型

    索引对数据库有多重要,我想大家都已经知道了吧,关于索引可能大家会对它多少有一些误解,首先索引是一种数据结构,并且索引不是越多越好.合理的索引可以提高存储引擎对数据的查询效率. 形象一点来说呢,索引跟书 ...

  3. 【MySQL】根据数据表中日期字段查询某个月每一天的数据量?查询数据表中所有日期每天的数据量?近三天每天数据量?

    前提这个table有一个日期字段date_time之类的 1.根据数据表中日期字段查询某个月每一天的数据量 如果要获取8月的数据,可以这么写: SELECT count(*), DATE_FORMAT ...

  4. mysql innodb表移植_mysql Innodb引擎独立表空间下通过复制.ibd文件快速迁移数据文件...

    假设需求:需要把库test1中的的数据迁移到test2中,并且test2中数据量特别大 硬性条件:1.mysql 使用 Innodb引擎,且开启独立表空间,2.两个库的mysql版本一致(不同版本下未 ...

  5. mysql innodb ibd_MySQL innodb引擎下根据.frm和.ibd文件恢复表结构和数据

    记录通过.frm和.ibd文件恢复数据到本地 .frm文件:保存了每个表的元数据,包括表结构的定义等: .ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per ...

  6. (读书笔记)关于InnoDB引擎中的一致性锁定读

    我们上篇主要讲到,在默认配置下,即事务的隔离级别为 REPEATABLE READ模式下,InnoDB 存储引擎的select操作使用一致性非锁定读 但是在某些情况下,用户需要显式地对数据库读取操作进 ...

  7. mysql 5.6l安装教程,Mysql中MyISAM引擎和InnoDB引擎的比较

    结论 如果不清楚自己应该用什么引擎,那么请选择InnoDB,Mysql5.5+的版本默认引擎都是InnoDB,早期的Mysql版本默认的引擎是MyISAM MyISAM 和 InnoDB的适用场景 M ...

  8. Mysql (InnoDB引擎)聚集索引和辅助索引

    聚集索引: InnoDB存储引擎表是索引组织表,即按照主键的顺序存储数据.  聚集索引(clustered index)就是按照每张表的主键构造一棵B+树,树中的叶子节点存放着表中的行记录数据,因此, ...

  9. MySQL存储引擎(InnoDB引擎)

    本篇章主要介绍什么是 MySQL 存储引擎?常用的 MySQL 存储引擎有哪些?以及详细介绍一下目前应用最广泛的 InnoDB 存储引擎,包括其:逻辑存储结构.架构.事务原理.MVCC等. 一.初识  ...

最新文章

  1. angular4 表单
  2. Netflix如何使用机器学习来提升流媒体质量?
  3. 云计算的发展及应用--演讲用PPT
  4. 算法高级(24)-一致性哈希算法在分布式系统中的使用场景
  5. 95-140-106-源码-transform-算子filter
  6. (紫书,感谢作者)第7章暴力求解法
  7. C#:根据特定分隔符分割字符串
  8. 图解CSS3----盒子模型
  9. C#项目班级管理系统
  10. android 不同机型 bug,[Android] Opengl ES 机型适配 bug 汇总
  11. python输入直角三角形_如何用python做出直角三角形和其形成的锥形
  12. 基于echarts+html+css+jq的数据可视化大屏展示炫酷看板[附源码]
  13. GoFW|网页加速器
  14. 苏州银行对公存款业务模块维护
  15. 时区提示:Local time zone must be set--see zic manual page 2018的解决办法
  16. Python饿汉式和懒汉式单例模式的实现
  17. Excel实用教程-字符提取函数(FIND/LEFT/RIGHT/LEN/MID/TEXT)
  18. JavaScript 小数转分数
  19. 十一、捕鱼达人的鱼儿游泳动画
  20. Flutter 图片和多行文本中的第一行对齐,文字行高、行距、偏移设置

热门文章

  1. 2018成都蚂蚁金服两年前端社招面经
  2. 计算机网络安全防范措施的摘要,浅析计算机网络安全的隐患及防范措施
  3. SAP DELL磁带机( PowerVault 110T)的备份和恢复(图解)
  4. 老板!过年了来谈谈加薪吧!
  5. Chrome 调试 websocket
  6. 蓝桥杯十二届校内模拟赛 黄绿蓝小球方案(DFS)
  7. oracle rollback作用,Oracle ROLLBACK语句(回滚事务)
  8. ReplicaSet和Deployment
  9. 计算机课集体备课,信息技术学科组集体备课活动记录
  10. 敏捷(Agile)是什么?--参加优普丰CSM认证培训有感