mysql基础-Innodb逻辑存储结构

本文详细介绍了MySQL Innodb存储引擎的逻辑存储结构,重点讲解了磁盘预读机制、数据页的定义、实现及结构,包括页头、页目录等组件的作用。此外,还探讨了行格式,如Compact、Redundant、Dynamic和Compressed,并讨论了行溢出数据的处理方式。通过对Innodb页和行结构的理解,有助于优化数据库查询效率和存储策略。
摘要由CSDN通过智能技术生成

通过阅读本文可以了解什么?

  • 磁盘预读概念
  • 数据页结构
  • innoDb的行格式
  • 行溢出
  • VARCHAR(65535) 大小的列能不能创建
  • 怎么定位到一条数据
  • 为什么尽可能设置为非NULL字段

从InnoDB存储引擎的逻辑存储结构来看,所有的数据都被逻辑逻辑的存放在一个空间中,成为表空间。表空间又由 段、区、页组成。本文着重将页和行记录相关的数据

磁盘预读

mysql服务器是我们在生产环境中常用的服务器,大部分的存储引擎数据都是写入到磁盘中的而服务器每次读取数据时会先从pagecache读取数据,如果pagecache中没有,需要从磁盘进行读取。

我们知道当我们从磁盘读取数据时,需要经过磁盘寻址加旋转的过程,相对于从缓存中读数据来说是很慢的,所以为了保证数据的读取效率,mysql服务器不是按需读取,而是进行磁盘预读

预读的长度一般为页(page)的整倍数。磁盘会找到数据的起始位置并向后连续读取一页或几页载入内存中。

数据页结构

定义

页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(在许多操作系统中,页得大小通常为4k),主存和磁盘以页为单位交换数据。

InnoDB中的实现

InnoDB中页的大小一般为 16 KB,也就是说,当需要从磁盘中读数据时 每一次最少将从磁盘中读取16KB的内容到内存中,每一次最少也会把内存中的16KB内容写到磁盘中。

默认的页大小为 16KB,每个页中至少存储有 2 条或以上的行记录

从InnoDB 1.2X开始 我们可以通过参数 innodb_page_size
将页的大小设置为4K、8K、16K

页的类别
  1. 数据页(B-tree Node)
  2. undo 页 (undo Log Page)
  3. 系统页 (System Page)
  4. 事物数据页(Transaction system page)
  5. 插入缓冲空闲列表页 (Insert Buffer Free List)
  6. 插入缓冲位图页(Insert Buffer Bitmap)
  7. 未压缩的二进制大对象页(UnCompresser BLOB Page)
  8. 压缩的二进制大对象页(Compressed BLOB Page)
查看默认页的大小
SHOW GLOBAL STATUS like 'Innodb_page_size';
页的结构

页结构

各模块作用
名称 占用空间 描述
File Header 38字节 页的一些通用信息
Page Header 56字节 数据页专有的一些信息
Infimum + Supremum 26字节</
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值