MySQL八股学习历程3MySQL数据页的格式from小林coding

news2025/3/6 12:15:19

MySQL八股学习历程3MySQL数据页的格式from小林coding

  • InnoDB数据页
  • MySQL单表建议数据承载量探究

InnoDB数据页

InnoDB 的数据是按数据页为单位来读写的,每个数据页大小默认为16KB,数据页的格式如下图
InnoDB数据页格式
InnoDB页各项作用
文件头中有两个指针,指向上一个数据页和下一个数据页,使得页面连接成一个链表,数据页中的记录按照主键的顺序组成一个单向链表,为了提高效率,InnoDB为这些记录分了组,并且用一个指针指向这些组,称之为槽,整个结构如下,这些指针被放到页目录的位置中
页目录结构示意图
为了链表过长,导致顺序查询的复杂度过大,InnoDB对每个链表的长度做了如下限制

  • 第一个分组中的记录只能有 1 条记录;
  • 最后一个分组中的记录条数范围只能在 1-8 条之间;
  • 剩下的分组中记录条数范围只能在 4-8 条之间

MySQL单表建议数据承载量探究

InnoDB的B+树节点种类,非叶子节点存储索引,那么InnoDB的分叉数等于
X = ( T o t a l S i z e − N o t D a t a S i z e ) ÷ i n d e x S i z e X = (TotalSize - NotDataSize)\div indexSize X=(TotalSizeNotDataSize)÷indexSize
其中假设主键为bigint类型,那么一个bigint占8byte, 页号为固定的4Byte,indexSize为12B,页大小totalSize为16KB,上面页中除了用户记录大概占据1KB的内存
则叉数X约等于1280
一般而言MySQL的B+树索引层高不大于3,那么单表的数据承载最大量建议值为
Y = X 2 × ( T o t a l S i z e − N o t D a t a S i z e ) ÷ ( s i n g l e R o w S i z e ) Y = X^2 \times (TotalSize - NotDataSize) \div (singleRowSize) Y=X2×(TotalSizeNotDataSize)÷(singleRowSize)
超过这个上限,MySQL的查询时间将会激增

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/762557.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大佬带你体验华为云代码检查服务CodeArts Check

1 开发者的自述 作为开发者,刚开始都不希望有任何针对他代码的批评,因为一旦知道代码被检测出问题,就会付出额外的努力做好工作,实际上,从一个开发人员的编码中,你能更清楚地了解编程语言可以做什么&#…

单片机裸机程序框架是怎样的?

单片机裸机程序框架指的是在单片机上进行编程时,不依赖任何操作系统或高级库的纯裸机编程框架。这意味着你需要直接操作底层硬件和寄存器,以完成特定的任务。下面是一个典型的单片机裸机程序框架,以C语言为例: // 头文件包含&…

分布式kmeans(scala原码实现)

scala分布式kmeans 1.分布式Kmeans算法设计思路2.分布式Kmeans算法代码实现2.1 Driver(主要负责分配、汇总数据)2.2 Executor(主要负责计算)2.3 Executor2(主要负责计算) 3.分布式Kmeans算法spark集群部署3…

如何解决笔记本电脑键盘失灵的问题:3个简单而有效的解决方法

当你使用笔记本电脑时,可能会遇到键盘失灵的情况,这是一件非常令人恼火的事情。然而,不要担心,下面将为你提供三个简单而有效的解决方法。 首先,检查连接和驱动程序。请确保键盘与笔记本电脑的连接正常,有时…

数据结构与算法之美总结(数组、链表、栈、队列、递归、排序及二分)

title: 数据结构与算法之美总结(数组、链表、栈、队列、递归、排序及二分) date: 2023-04-15 01:41:26 tags: 数据结构算法 categories:数据结构与算法 cover: https://cover.png feature: false 1. 前言 1、什么是数据结构?什么是算法&…

SpringCloud Alibaba组件之Seata安装部署

seata server(TC) 部署 部署指南:https://seata.io/zh-cn/docs/ops/deploy-guide-beginner.html 下载地址:https://github.com/seata/seata/tags 版本对应关系:SpringCloud Alibaba 组件对应关系说明 下载 通过查…

Minio部署总结

官方介绍 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小&#xf…

一文搞懂数据库索引原理

前言 写数据库,我第一时间就想到了MySQL、Oracle、索引、存储过程、查询优化等等。 不知道大家是不是跟我想得一样,我最想写的是索引,为啥呢? 以下这个面试场景,不知道大家熟悉不熟悉: 面试官:数…

郑州网站域名升级https通配符证书

新创建的网站如果没有安装SSL证书,在客户端与服务器传输信息时会使用明文传输,明文传输的数据容易被其他人截获或者插入违法信息,会对网站所有者和访问网站的客户带来危害。而部署了SSL证书将网站域名由http升级为https,会在客户端…

【PHP面试题51】Swoole是什么?有什么特点,主要解决了什么问题

文章目录 一、前言二、什么是Swoole?三、如何使用Swoole?四、Swoole主要解决了什么问题?4.1 高性能4.2 高并发4.3 异步编程4.4 多协议支持 五、总结 一、前言 本文已收录于PHP全栈系列专栏:PHP面试专区。 计划将全覆盖PHP开发领域…

jdk1.8安装教程及环境变量配置(含jdk8,11,13安装文件)

目录 友情提醒第一章、JVM、JRE、JDK介绍第二章、下载和安装JDK2.1)百度网盘直接下载免安装2.2)官网下载安装JDK(需要收费) 第三章、环境变量配置3.1)windows环境变量配置3.2)验证环境变量是否配置成功 友情…

spark启动HA时workers为0,且为standby状态

今天学习一个spark视频,在启动StandAloneHa模式的时候,发现workers为0,而且spark两个master的状态都为standby,找了很久,才知道我用的spark3.2 最低支撑的zookeeper版本为3.5.x,而且zookeeper的安装包是需要带bin的那个…

自学C++(4)

1、友元 友元的目的就是让一个函数或者类访问另一个类中private成员 1.1全局函数做友元 写法:在类外定义一个全局函数,如果这个函数访问到了类中private成员,则需要在这个类中声明这个函数为private类型。 这里需要注意的是全局函数形参的…

Spark MLlib快速入门(1)逻辑回归、Kmeans、决策树、Pipeline、交叉验证

Spark MLlib快速入门(1)逻辑回归、Kmeans、决策树案例 除了scikit-learn外,在spark中也提供了机器学习库,即Spark MLlib。 在Spark MLlib机器学习库提供两套算法实现的API:基于RDD API和基于DataFrame API。今天,主要介绍下Data…

ModuleNotFoundError: No module named ‘pkg_resources‘

原因可能是因为setuptools升级版本过高,把setuptools降级到44.0.0及以下即可。 pip uninstall setuptoolspip install setuptools44.0.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

【洛谷】P3865 【模板】ST 表

先上ACcode: #include<bits/stdc.h> using namespace std; const int N1e510,M1e520; int n,m,f[N][20]; void solve(){cin>>n>>m;for(int i1;i<n;i) cin>>f[i][0];for(int j1;j<20;j)for(int i1;i(1<<j)-1<n;i)f[i][j]max(f[i][j-1],…

C\C++ 使用ping判断ip是否能连通

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan 简介&#xff1a; ping是一种用于测试网络连接的工具&#xff0c;它通过发送数据包到目标设备并等待其响应来工作&#xff0c;以检查网络是否连通。下面是例子. 效果&#xff1a; 代码…

【C语言】初阶结构体

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在回炉重造C语言&#xff08;2023暑假&#xff09; ✈️专栏&#xff1a;【C语言航路】 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你…

使用Vue-Router实现页面跳转

安装 npm install vue-router4 --save项目中新建router.js文件 import { createRouter,createWebHashHistory } from "vue-router"; import Home from "/pages/Home.vue" import Banner from "/pages/Banner.vue" import Post from "/pag…

每日一题2023.7.17|根据层序遍历构建二叉树

根据层序遍历构建二叉树 解题思路&#xff1a; 如果所给层序遍历数组非空&#xff0c;先构建出root结点并加入辅助队列qu&#xff0c;之后当qu非空时&#xff0c;每次从qu中取出一个结点node&#xff0c;从头开始取数组中的元素作为node的左右孩子结点。并将非空的左右孩子结点…