MySQL InnoDB引擎——三层B+树可以存储多少数据量
先说结论:
3层B+树大概可以存:
- 主键为bigint:约2000w
- 主键为int:约4000w
*备注:
在《阿里开发手册》中建议,单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表,如果预计三年后数据量根本达不到这个级别,就不必要在创建表时就分库分表。
计算
在Innodb存储引擎里面,最小存储单元是页,而一个页的大小默认是16KB。 一个节点(叶子节点或非叶子节点)的大小就是一页。
在MySQL Innodb存储引擎中的B+树的一个节点大小为“1页”,也就是16k。也即代表B+树的每个节点可以存16KB数据。
为什么设计成这个大小?解释一下:
之所以设置为一页,是因为对于大部分业务,一页就足够了。
(一条数据必须是放在一个节点中,不能拆开到多个节点存储。而一般一条数据大概1KByte,那么一页能容纳的大概16条,即一个节点容纳不止一条数据,而且是多达16条!!所以大小采用最小存储单元足够用了~)
非叶子节点:
ps:指针是用来指向下一个“节点”的。
- 假设主键类型为bigint,占用8Byte,指针可以设置为占用6Byte,总共14Byte。这样就可以算出一个非叶子节点大概可以存放16KByte/14Byte=1170个“主键+指针”的组合。
- 假设主键类型为int,占用4Byte,指针可以设置为占用6Byte,总共10Byte。这样就可以算出一个非叶子节点大概可以存放16KByte/10Byte≈1600个“主键+指针”的组合。
叶子节点:
在B+树中,真正的数据是只存储在叶子节点中的。
这里我们假设我们的一行数据大小是1K,那么我们一个叶子节点就可以存16KByte/10Byte=16条(行)数据。
由此,可以推算出公式:
- 两层总数 = 非叶子节点(根) * 叶子节点。
- 三层总数 = 非叶子节点(根) * 非叶子节点 * 叶子节点。
主键为bigint(约2000w):
- 2层B+树的话:可以存放1170个*16条=18720条(行)数据。
- 3层B+树的话:可以存放1170个*1170个*16条=21902400条(行)数据。
主键为int(约4000w):
- 2层B+树的话:可以存放1600个*16条=25600条(行)数据。
- 3层B+树的话:可以存放1600个*1600个*16条=40960000条(行)数据。
所以三层B+树也就差不多2000w条或4000w条数据。
参考:面试官问我为啥B+树一般都不超过3层?3层B+树能存多少数据?redo log与binlog的两阶段提交?_3层b+树能存储多少数据_不平衡的叉叉树的博客-CSDN博客
相关文章:
MySQL InnoDB引擎——三层B+树可以存储多少数据量
先说结论: 3层B树大概可以存: 主键为bigint:约2000w主键为int:约4000w*备注: 在《阿里开发手册》中建议,单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表,如果预计三年后…...
部署跨云容灾的五大难点
为什么企业需要跨云容灾? 据统计,全球已有70%的企业使用云计算服务。上云帮助企业更高效地管理数据资产,但它并非绝对安全。如停电、漏水等机房事故;地震、火灾等自然性灾害;亦或是人为失误,都有可能造成数…...
Docker Compose
为什么需要使用Docker ComposeDocker Compose 容器编排技术1、现在我们有一个springboot项目,需要依赖Redis、mysql、nginx。如果使用docker原生部署的话,则需要安装Redis、mysql、nginx容器,才可以启动我们springboot项目,这样的…...
【ARM架构】armv8 系统安全概述
ARMv8-A 系统中的安全 一个安全或可信的操作系统保护着系统中敏感的信息,例如,可以保护用户存储的密码,信用卡等认证信息免受攻击。 安全由以下原则定义: 保密性:保护设备上的敏感信息,防止未经授权的访问…...
数学小课堂:数学边界
文章目录 引言I 费马大定理1.1毕达哥拉斯定理的推广1.2 一波三折的定理证明过程1.3 希尔伯特第十问题II 数学的边界2.1 认识论问题2.2 在边界内做事情2.3 总结引言 了解数学本身的局限性,才能更好地使用它的原理和思维方式。 数学的边界,这是一个硬的边界,大家不要试图逾越…...
检测中断到来时,让LED灯状态取反,并且在串口工具上打印一句话
任务:检测中断到来时,让LED灯状态取反,并且在串口工具上打印一句话例如:当按键1按下之后,让LED1状态取反,并打印“LED1 down”当按键2按下之后,让LED2状态取反,并打印“LED2 down”当…...
2023年CDGA考试-第7章-数据安全(含答案)
2023年CDGA考试-第7章-数据安全(含答案) 单选题 1.数据安全不仅涉及防止不当访问,也涉及对数据的适当访问,下列理解不正确的是 ( ) A.强密码有助于提高破解风险 B.安全专家建议 45-180天修改一次密码 C.用户要尽量使用多套密码和账户 D.具有高度敏感信息权限的用户都应使…...
输出月份英文名称--C语言实现
任务描述 本关需要你编写一个用指针数组处理的c程序,然后从键盘输入月份时输出对应的英文名。 相关知识 指针 指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。就像其他变量或常量一样,你必须在使用指针存储其他变量地址之前,对其进行声明。 指针变量声明…...
6年测试经验老鸟:做不好自动化测试,还谈什么高薪?
提起自动化测试,可谓仁者见人,智者见智,心中五味杂陈啊!你从任何一个招聘渠道来看最近两年对测试岗位的要求,几乎都要求会自动化测试。而不少人一直认为手工测试才是王道,工作中有的时候也用不到程序&#…...
Java Web:开篇综述与第一章
前言 翻开这本书,又是一段新的学习路线,在学习的道路上是枯燥的,是乏味的,难免有放弃的想法。但回看曾经的学习笔记,自己也一步一步走过来了,即使会自我怀疑自我否定,但不坚持不努力是永远没有…...
ES6中对象的一些拓展
当对象键名与对应值名相等的时候,可以进行简写 const obj { name }允许字面量定义对象时,将表达式放在括号内 let lastWord last word;const a {first word: hello,[lastWord]: world };a[first word] // "hello" a[lastWord] // "wo…...
10分钟快速入门Pandas库
pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的,这篇文章主要介绍了10分钟快速入门Pandas库,重点介绍pandas常见使用方法,结合实例代码介绍的非常详细,需要的朋友可以参考下目录Pandas的介绍pandas 是基于Num…...
考研复试机试 | C++ | 王道机试课程笔记
目录Zero-complexity (上交复试题)题目:代码:括号匹配问题题目:代码:表达式解析问题 (浙大机试题)题目:代码:标准库里提供了栈 stack<typename> myStack .size() 栈的大小 .pu…...
【python科目一:生产线系统设计;激光刀切割材料】
工厂有若干条生产线,可以生产不同型号的产品,要求实现功能如下:1. ProductionLineMgmtSys 初始化生产线和产品的生产周期有num条生产线,编号从0开始periods[i]表示生产一个型号为i的产品所需的生产周期,单位为天2. Pro…...
Linux——进程概念(进程状态)
目录 进程状态 三态模型 五态模型 七态模型 Example eg1:阻塞态:等待某种资源的过程 eg2:挂起态 Linux内核源代码 Linux进程状态查看 Linux运行状态 R运行状态(running): S睡眠状态(sleeping): D磁盘休眠状…...
超详细:正则表达式从入门到入门
文章目录匹配字符\d \D\s \S量词:匹配多个字符星号*加号问号?大括号{}集合字符[]明确字符范围字符补集字符常见字符集贪婪模式和非贪婪模式匹配开头和结尾贪婪模式和非贪婪模式常用函数re.findall()re.search()re.compile()re.split()re.sub()本文章首发…...
jupyter notebook小技巧
1、.ipynb 文件转word文档 将 jupyter notebook(.ipynb 文件)转换为 word 文件(.docx)的最简单方法是使用 pandoc。 首先安装pip install pandoc, 安装后,在将 Jupyter notebook文件目录cmd 然后输入打开…...
考研复试机试 | c++ | 王道复试班
目录n的阶乘 (清华上机)题目描述代码汉诺塔问题题目:代码:Fibonacci数列 (上交复试)题目代码:二叉树:题目:代码:n的阶乘 (清华上机) …...
js闭包简单理解
js里面的闭包是一个难点也是它的一个特色,是我们必须掌握的js高级特性,那么什么是闭包呢?它又有什么作用呢? 1,提到闭包我们这里先讲解一下js作用域的问题 js的作用域分两种,全局和局部,基于我…...
「JVM 编译优化」编译器优化技术
后端编译(即时编译、提前编译)的目标时将字节码翻译成本地机器码,而难点是输出优化质量较高的机器码; 文章目录1. 优化技术概览2. 方法内联(Inlining)3. 逃逸分析(Escape Analysis)4…...
Windows下OpenClaw避坑指南:千问3.5-35B-A3B-FP8接口配置全流程
Windows下OpenClaw避坑指南:千问3.5-35B-A3B-FP8接口配置全流程 1. 为什么选择OpenClaw千问3.5组合? 去年我在尝试自动化处理大量PDF报告时,发现市面上的RPA工具要么太笨重,要么无法处理复杂语义。直到遇到OpenClaw这个开源智能…...
嵌入式系统中命令模式的应用与优化
1. 嵌入式系统中的误操作救赎之道在嵌入式开发中,参数配置误操作就像厨房里的盐罐打翻——一瞬间的失误可能导致整锅菜报废。上周我就遇到一个真实案例:某工业设备因为工程师误触"恢复出厂设置",导致产线上30台设备参数全部重置&am…...
IT自动化运维平台建设解决方案:三阶段演进思路、平台架构与核心能力、关键功能模块、典型自动化场景与执行流程
该方案提出从人工运维向自动化、智能化演进,核心是通过统一平台整合Zabbix监控、脚本管理与工单系统,实现告警自动治愈与周期性任务自动化执行。方案采用分批推进策略,旨在提升效率、保障业务连续性并降低人为风险,最终落地智能化…...
Python 实战:数据归一化 4 种核心方法对比 + 代码实现(机器学习必看)
在机器学习、深度学习的数据预处理中,数据归一化是绕不开的关键步骤。不同特征往往量纲不同(比如年龄 18-60、收入 1000-100000),直接训练模型会导致:梯度下降收敛慢、难以最优解距离类算法(KNN、K-Means、…...
基于MPC的四旋翼高度动力学及X-Y平面位置控制设计的实践与仿真
基于MPC的四旋翼高度动力学以及x-y平面位置控制设计 简介:本项目侧重于MPC控制器设计,用于控制四旋翼的高度动力学以及x-y平面位置 就方向动力学而言,使用了定制的离散PID(DPID)控制器 该项目在MATLAB 2022b中进行了完全编码和仿真 此外&…...
Javase(三)三大特性之封装
封装现实生活中,比如鼠标,我们知道它是全部装在一个装置里面,只暴露出一个接口能够我们充电或连接电脑,里面的设计、电路等都不暴露给我们这些使用者看,这样子能很好的保护里面的东西不被破坏。在Java中也是如此&#…...
【MATLAB自编程求解二维质量守恒方程+动量守恒NS方程算例】 理论上通过代码极难求解NS方程 1
【MATLAB自编程求解二维质量守恒方程+动量守恒NS方程算例】理论上通过代码极难求解NS方程1.编写了求解NS方程的计算方法2.可通过求解NS方程计算x和y方向的速度场,以及二维整体的压力场3.可自行设置二维几何参数,进口速度等边界条件二维NS方程…...
终极指南:使用Docker快速部署WriteGPT AI创作平台
终极指南:使用Docker快速部署WriteGPT AI创作平台 【免费下载链接】WriteGPT 基于开源GPT2.0的初代创作型人工智能 | 可扩展、可进化 项目地址: https://gitcode.com/gh_mirrors/wri/WriteGPT WriteGPT是一款基于开源GPT-2.0的初代创作型人工智能框架&#x…...
关系型数据库星型模型聚合表生成
在关系型数据库(MySQL、Oracle、SQL Server等)中,通过星型模型模拟多维分析结构,高效生成聚合表,解决报表查询慢、多维分析繁琐、实时计算压力大等核心痛点。 一、前置基础 星型模型是关系型数据库模拟多维结构的最优方…...
mysql备份工具选择_mysqldump对InnoDB与MyISAM支持
mysqldump默认对MyISAM用表级锁、InnoDB不启用事务快照,混合引擎必须用--lock-all-tables保证一致性,且需确保REPEATABLE READ隔离级别和ROW/MIXED binlog格式。mysqldump 默认行为对 InnoDB 和 MyISAM 完全不同默认不加任何参数时,mysqldump…...
