mysql数据页存储与磁盘之间的关系

VCS HVP与验证计划planner:数字IC验证环境搭建与收敛实践 在数字IC验证中,VCS 是广泛使用的编译型仿真器,HVP 通常指面向硬件验证平台的高性能编译选项集,用于开启 SystemVerilog 类、随机约束和 NTB 等能力;planner 则指验证计划管理,核心是把功能点与测试用例、覆盖点建立映射。理解 VCS 先编译后仿真的原理,有助于优化增量编译、调试访问和覆盖率采集,提升回归收敛效率。规划驱动让激励不再散落,设计改版时能快速定位受影响用例,交接和覆盖率收敛更有依据。无论是 UVM 环境搭建、编译参数选择,还是验证计划表维护,都需要把工具选项与规划方法结 阅读详情

数据库存储和读取

转载:https://my.oschina.net/u/1859679/blog/1581379

在整个数据库体系结构中,我们可以使用不同的存储引擎来存储数据,而绝大多数存储引擎都以二进制的形式存储数据。

在 InnoDB 存储引擎中,所有的数据都被逻辑地存放在表空间中,表空间(tablespace)是存储引擎中最高的存储逻辑单位,在表空间的下面又包括段(segment)、区(extent)、页(page):

在这里插入图片描述

同一个数据库实例的所有表空间都有相同的页大小;默认情况下,表空间中的页大小都为 16KB,当然也可以通过改变 innodb_page_size 选项对默认大小进行修改,需要注意的是不同的页大小最终也会导致区大小的不同:

三、随机读取和顺序读取
在我们常用的sql理解中,数据是以行的形式读取出来的,其实不然,通过上述的结构,我们可以了解到,单次从磁盘读取单位是页,而不是行,也就是说,你即便只读取一行记录,从磁盘中也是会读取一页的,当然了单页读取代价也是蛮高的,一般都会进行预读,这些后续再说。

关系型数据库管理系统最重要的一个目标就是,确保表或者索引中的数据是随时可以用的。那么为了尽可能的实现这个目标,会使用内存中的缓冲池来最小化磁盘活动。

每一个缓冲池都足够大,大到可以存放许多页,可能是成千上万的页。

缓冲池管理器将尽力确保经常使用的数据被保存于池中,以避免一些不必要的磁盘读。如果一个索引或者表页在缓冲池中被找到,那么将会处理很快。

如果在缓冲池中,没有找到数据,会从磁盘服务器的缓冲区里面去读取。

磁盘服务器的缓冲区,如同数据库的缓冲池读取一样,磁盘服务器试图将频繁使用的数据保留在内存中,以降低高昂的磁盘读取成本。这个读取成本大概会在1ms左右。

如果磁盘服务器的缓冲池中依然没有找到数据,此时就必须要从磁盘读取了,此时读取又分区随机读取和顺序读取。

2、随机I/O
我们必须记住一个页包含了多条记录,我们可能需要该页上的所有行,也可能是其中一部分,或者是一行,但所花费的成本都是相同的,读取一个页,需要一次随机I/O,大约需要10ms的时间。

在这里插入图片描述

3、顺序读取
如果我们需要将多个页读取到缓冲池中,并按顺序处理它们,此时读取的速度回变的很快,具体的原理,在B树索引中也有过介绍,此时读取每个页面(4kb)所花费的时间大概为0.1ms左右,这个时间消耗对随机IO有很大的优势。

以下几种情况,会对数据进行顺序读取。

全表扫描

全索引扫描

索引片扫描

通过聚蔟索引扫描表行

顺序读取有两个重要的优势:

同时读取多个页意味着平均读取每个页的时间将会减少。在当前磁盘服务器条件下,对于4kb大小的页而言,这一值可能会低于0.1ms(40MB/s)
由于数据库引擎知道需要读取哪些页,所有可以在页被真正请求之前就提前将其读取进来,我们称为预读

最大与最小(数据库的阀值)

  1. 一个表里最多可有1017列(在MySQL 5.6.9 之前最大支持1000列)。虚拟列也受限这个限制。

  2. 一个表最多可以有64个二级索引。

  3. 如果innodb_large_prefix打开,在InnoDB表DYNAMIC或COMPRESSED列格式下,索引前缀最大支持前3072字节;如果不打开的话,在任意列格式下,最多支持前767字节。这个限制既适用于前缀索引也适用于全列索引。
    基于一个16KB的页最多装3072个字节,如果你把InnoDB 的page 大小从8KB降到4KB,索引的长度也相应的降低。也就是说,当页是8KB的时候最大索引长度是1536字节;当页大小是4KB的时候最大索引长度是768字节;(

这里与“紧凑冗余行有关系”

紧凑和冗余行格式

当为外部页外存储选择可变长度列时InnoDB,将该行中的前768个字节存储在本地,其余外部存储到溢出页中。每个这样的列都有自己的溢出页列表。768字节的前缀伴随着一个20字节的值,该值存储列的真实长度并指向溢出列表,其中存储了值的其余部分。请参见 第14.11节“InnoDB行格式”。

)
转载:https://dev.mysql.com/doc/refman/5.7/en/innodb-file-space.html
14.12.2文件空间管理

联合索引最多支持16列,如果超过这个限制就会遇到以下错误:
ERROR 1070 (42000): Too many key parts specified; max 16 parts allowed

  1. 行长度(除去可变长类型:VARBINARY/VARCHAR/BLOB/TEXT),要小于页长(如4KB, 8KB, 16KB, and 32KB)的一半。例如:innodb_page_size 长度是16KB的话,行长不超过8KB;如果innodb_page_size 是64KB的话,行长不超过16KB; LONGBLOB/LONGTEXT/BLOB/TEXT列必须小于4GB,整个行长也必须小于4GB。如果一行小于一页的一半,它可以存在一个page里面。如果超过了页的一半,就会把可变长列放到额外的页存(如果对这个感兴趣的话可以看看,MySQL页管理)。

  2. 行所存储的值的最大值为页的大小的一半,一般情况下页的大小是16kB,所以每行的长度大小不能超过8
    kb;2的16次刚好为65535;

GPS数据处理必备:IGS精密星历下载与使用全攻略(附武汉大学/CDDIS/CODE/GFZ地址) 本文为GPS/GNSS数据处理者提供了IGS精密星历的完整下载与使用指南。详细解析了最终、快速、超快速三种精密星历产品的区别与选择策略,并手把手教学如何从武汉大学、CDDIS、CODE、GFZ四大主流数据中心高效获取数据,涵盖文件命名规则解析及自动化下载脚本,助力科研与工程应用。 阅读详情

相关推荐

【Vite+Vue3+TS】基于Vite+Vue3+TypeScript+ESLint+Prettier+Stylelint搭建项目(亲测超详细)

结合了很多项目和文章,总结一篇项目构建的笔记。 温馨提示:文章末尾记录了我在搭建项目过程中,遇到的一些问题和解决办法 ~

aDiaoYa_的博客 4231

mysql中的页与磁盘关系_MySql那些事儿(三):InnoDB架构介绍之磁盘篇

作者:阿茂上一篇我们聊了InnoDB内存结构,这一篇我们聊一聊数据在磁盘上的结构。纯聊理论确实比较枯燥,感觉也没啥营养,我在这里只是想方便大家对MySQL的整体结构有个详细的了解,在后面的文章中我会频繁的提到这些内容,先整体的过一遍有个印象。下面我就开始说InnoDb的数据磁盘结构(本篇文章不做特殊说明都是按照Mysq 5.7来讲解的)。表大家都不陌生吧,整天CRUD的数据都在这里,也是一个系统的...

weixin_34221892的博客 1127

ESP-01S获取网络时间踩坑全记录:AT指令调试、JSON解析乱码、时区处理,一个都不能少

本文详细记录了使用ESP-01S WIFI模块获取网络时间的完整过程,包括AT指令调试、JSON解析乱码处理以及时区转换等关键步骤。通过实战案例和代码示例,帮助开发者避开常见陷阱,实现稳定的网络时间同步功能。

weixin_30460489的博客 295

InnoDB引擎之内存与磁盘结构

Buffer Pool 的大小是有限的,对于一些频繁访问的数据我们希望可以一直留在 Buffer Pool 中,而一些很少访问的数据希望可以在某些时机可以淘汰掉

互联网架构师笔记 1332

麒麟信安3.3-6C电网版虚拟机安装避坑指南:从ISO下载到SSH配置全流程

本文提供麒麟信安3.3-6C电网版虚拟机的详细安装与配置指南。针对电力行业仿真测试需求,重点解析从ISO镜像获取、虚拟机环境准备、安装过程中的三大“雷区”(如多管理员密码逻辑、分区方案、网络配置)到首次启动后的网络、SSH及root策略配置的全流程避坑要点,帮助技术人员高效、安全地完成部署。

rainy的博客 854

大模型在心律失常预测及治疗方案制定中的应用研究报告

目录一、引言1.1 研究背景与意义1.2 研究目的与方法1.3 研究创新点二、大模型技术概述2.1 大模型基本原理2.2 常见大模型类型及特点2.3 大模型在医疗领域的应用现状三、心律失常的术前预测与准备3.1 术前心律失常预测的重要性3.2 大模型在术前预测中的应用案例3.3 基于预测结果的术前准备方案四、术中监测与实时调整4.1 术中监测心律失常的方法与技术4.2 大模型辅助术中决策的机制4.3 实时调整手术方案的策略与实践五、术后恢复与并发症风险预测5.1 术后心律失常的监测与评估5.2 大模型预测术

嵌入式毕设/课设资料清单(速查手册·文档模板·题库,持续更新)→ 见最新文章 1596

MySQL : 好好学习一下InnoDB中的页

页是存储的基础,也是索引的基础,了解了页后面就可以深入的了解索引了。这一块没了解太深,毕竟这东西其实我应用的场景几乎没有,主要是不弄清楚后面读起来很难受。尽量做到了自己去输出东西,整理了一些问题,但是毕竟站在别人修好的路上面,有些东西不能保证一定是对的,也有可能是我理解有误,如果有问题建议去看原文或者官方文档。

m0_71777195的博客 239

SAP会计凭证导入ABAP开发模板+注意点—附带源码

开发并不仅仅只要考虑实现的功能,只实现功能的是程序,考虑到使用场景的是工程。使用bapi校验创建会计凭证的数据,报错和参数和正式创建一致。用途,防止产生错误的凭证,即使财务凭证可以冲销。正式创建会计凭证。隐藏的坑。

小九啥也不会 1232

MySQL磁盘文件结构

本文详细介绍了MySQL数据库的磁盘文件结构,包括B+Tree索引结构、表空间、索引文件段、InnoDB存储引擎的逻辑存储结构等关键概念。文章深入探讨了表空间的组成、段、区、页的概念及其在数据存储和检索中的作用,以及如何通过这些结构优化数据库性能。

黎明鱼儿 1131

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象

在 UG NX中,有时需要批量删除某文件夹下多个.prt文件中固定一些图层中的体对象和曲线对象,这时如果采用手动逐个打开模型,并选择针对的图层删除,即耗时也容易遗漏,因此采用外部模式来处理比较方便。本文介绍批量删除某些图层中的体对象和曲线对象。

GimiGimmy 3035

Arduino IDE 开发ESP32-S3编译报错 Sketch too big?一步步解决!

解决方法很简单,只需要一步步来修改 Arduino IDE 的配置即可。确保你已经打开 Arduino IDE 并加载了你的 ESP32 代码。如果你也遇到了这个问题,按这个方法试试,应该就能顺利搞定!,如果你需要 OTA,就不能选这个方案,需要换成。,但我回头一想,我这块 ESP32-S3 可是。,按理说存储空间应该足够啊,那这到底是咋回事?,默认方案就装不下了,这时就需要选择更大的。按钮,这次应该不会报错了!,然后在下拉菜单中找到。,可以支持更大的固件。如果你的固件体积超过。,就能正常编译上传。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2136

Mysql的页结构详解

Mysql的页结构详解

weixin_46439731的博客 1557

深入RKNN Toolkit2:自定义算子与内存优化秘籍

本文系统探讨了RKNNToolkit2在模型转换中的关键技术与优化策略。首先介绍了该工具包的基础功能及模型转换流程,重点阐述了自定义算子的实现方法,包括算子分析、代码编写和注册集成等步骤,并以ReduceLogSumExp算子为例进行案例分析。在内存优化方面,详细论述了模型量化、内存复用和参数配置等策略,通过具体案例展示优化效果。最后结合智能安防项目实践,分享了YOLOv5模型部署经验及问题解决方案。文章指出,随着AI技术发展,RKNNToolkit2将在算子支持、量化技术和硬件适配等方面持续优化,为边缘计

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1389

Mysql检查点CheckPoint、LSN、redo日志 的刷新关系

  官方文档:https://dev.mysql.com/doc/refman/5.7/en/innodb-checkpoints.html   检查点:为了刷新buffer pool的数据page到磁盘中,使得持久化数据page之前相应的redo log可以失效掉 节约出空间可以被覆盖,也同时加快了 crash时  redo log恢复的速度  即从检查点恢复即可。           ...

翔之天空的专栏 4298

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MySQL单表为何别超2000万行?揭秘B+树与16KB页的生死博弈|得物技术

MySQL单表数据量建议控制在2000万以内的核心原因在于B+树索引结构的设计。InnoDB存储引擎采用16KB数据页存储数据,通过B+树组织索引,非叶子节点存储主键和指针,叶子节点存储完整行数据。三层B+树可支撑约2.5千万数据,查询最多只需3次磁盘IO;当数据量超过临界值,树高增至4层,IO次数增加将导致查询性能显著下降。该限制值受行大小影响,若单行数据更小(如250字节),三层B+树可支撑上亿数据。相比B树,B+树的高扇出特性使其更适合作为数据库索引。优化建议包括控制单行大小、分库分表等,在磁盘I/O

SmartCodeTech的博客 1533

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

MySQL到底为什么数据以页的形式存储在磁盘上?使用场景是什么?底层原理是什么?

【代码】MySQL到底为什么数据以页的形式存储在磁盘上?使用场景是什么?底层原理是什么?

长风破浪会有时的博客 762

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

MySql数据是如何存储在磁盘上存储的?

关于MySql数据库,相信很多人都不陌生,这是当今最常用的一种关系型数据库,关于MySql的知识也是很丰富的。那么,不知道大家有没有想过这样的问题:MySql中的数据是存在哪的?又是如何存储的呢?本文就来深入分析一下这些问题。文章内容很长,建议收藏,建议大家静下心来仔细阅读,一定会有收获!我们知道,关于Mysql这种关系型数据库,里面保存的数据最终都是要持久化到磁盘文件上面的。磁盘文件里存放的物理格式就是数据页(关于数据页,如果不太理解先忽略,后续文章单独介绍),数据页中存放的是一行一行的记录,但是对于数据

LoveSummer 2万+

MySQL:InnoDB磁盘数据页的存储结构

磁盘数据页的存储结构 在深入研究索引之前,我们必须先了解磁盘上的数据文件中的数据页的物理存储结构,因为索引的物理存储结构和使用原理都是跟数据页的物理存储结构有很大关联的 我们知道,数据库最终所有的数据(包括我们建的各种表和表里的数据)都是要存放在磁盘上的文件的,然后在文件里存放的物理格式就是数据页,那么大量的数据页在磁盘文件里是怎么存储的呢? 另外,大量的数据页是按照顺序一页一页的存放的,然后两个相邻的数据页之间会采用双向链表的格式相互引用。如下图: 那么上图中在磁盘文件里到底是怎么弄出来的呢? 其实

OceanStar的博客 1844

mysql数据是如何存储在磁盘的?

mysql组成、表空间、段、区、数据页、行、行记录、行溢出、索引、B+树、数据页分裂

aofeng9的博客 1184

MySql原理(一)数据页与BufferPool

记录在页中是按照主键值从小到大的顺序串联成为一个单向链表,因此查询也只能以头节点开始逐一向后查询,如果数据量大,那么性能就无法保证了。针对这个问题,Innodb采取了图书目录的解决方案,即:Page Directory。分组规则如下所示:1. 对于Infimum记录所在的分组只能有1条记录。2.对于Supermum记录所在的分组只能在1-8条记录之间。3.剩下的其他记录所在的分组只能在4-8条记录之间。

weixin_40134007的博客 1365

MySQL进阶之(三)InnoDB数据存储结构之数据页结构

InnoDB数据页结构

qq_50994235的博客 1784

为什么MySQL 以数据页(通常 16KB)为单位从磁盘读取数据?

我们把MySQL想象成一个大型的图书馆管理系统,而数据库里的数据就像是图书馆里的书籍。

长风破浪会有时的博客 979

MySQL数据页结构

最近在学习Mysql的数据结构,这里整理下。因为主流存储引擎是InnoDB,学习的也是它。这里介绍的也是InnoDB。 数据页 在操作系统中,我们知道为了跟磁盘交互,内存也是分页的,一页大小4KB。同样的在MySQL中为了提高吞吐率,数据也是分页的,不过MySQL的数据页大小是16KB。(确切的说是InnoDB数据页大小16KB) 为了详细说明,这里先用图介绍一下页的结构: 而在MySQL内存中,多个这样的数据结构作为节点构成一个双向链表。 File Header 从上边的图也可以.

hustzw07的博客 6027

MySQL——数据页

MySQL——数据页

爪哇缪斯的博客 4153

磁盘数据页的存储结构

先来看看磁盘上的数据文件中的数据页的物理存储结构,因为后续研究索引的物理存储结构以及使用原理的时候,都是跟数据页的物理存储结构是有很大关联的。 数据库最终所有的数据(包括我们建的各种表以及表里的数据)都是要存放在磁盘上的文件里的,然后在文件里存放的物理格式就是数据页,那么大量的数据页在磁盘文件里是怎么存储的呢? 首先大家要明白的一点是,大量的数据页是按顺序一页一页存放的,然后两两相邻的数据页之间会采用双向链表的格式互相引用,大致看起来如下图所示: 实一个数据页在磁盘文件里就是一段数据,可能是二进制或者别的

weixin_44583135的博客 990

mysql之Innodb数据页

存储管理:动态空间分配与碎片重用,平衡空间利用率与性能。查询优化:页目录和有序链表结构,支持高效点查与范围扫描。可靠性:校验和与LSN机制确保数据完整性,应对意外中断。理解数据页结构对数据库调优(如合理选择行格式、监控页分裂、调整参数)、故障排查(如空间碎片分析)和性能优化具有重要指导意义。

qq_43460315的博客 980
上一篇: swoole coronute 连接池复用
下一篇: IDEA使用git bash
zztIsGood
博客等级 码龄10年 5粉丝 23原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值