一文了解InnoDB存储结构

前言

InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后我们的数据也不会丢失,而真正处理数据的过程是发生在内存中,所以需要把磁盘中的数据加载到内存中,而我们知道磁盘的读写速度非常慢,和内存读写差了几个数量级,所以InnoDB存储引擎是如何将数据从磁盘中读出来的?本文先了解一下InnodDB的逻辑存储结构的概念以及之间的关系,为后续的学习打好基础。希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。

InnoDB存储结构

InnoDB所有的数据都被逻辑地存放在一个空间中,称之为表空间。而表空间由段(segment)、区(extent)、页(page)组成,如下所示:

这些组成部分的包含关系如下:

行(row)

我们平时是以记录为单位向表中插入数据的。这些记录在磁盘上的存放方式被称为行格式或者记录格式。InnoDB提供了4种行格式供我们选择,分别是Compact、Redundant、Dynamic和Compressed行格式。

页(page)

数据库管理存储空间的基本单位是页(Page),InnoDB将数据划分为若干个页,页是InnoDB存储引擎磁盘管理的最小单位,InnoDB中页的大小默认为 16KB;

一个页中可以存储多个行记录,数据库以页作为磁盘和内存之间交互的基本单位,在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载,也就是一次最少从磁盘中读取16KB的内容到内存中,否则一次读取(也就是一次I/O操作)只能处理一行数据,效率会非常低。

区(extend)

比页大一级的存储结构,区是由连续页组成的空间,在任何情况下每个区的大小都为1MB。为了保证区中页的连续性,InonoDB存储引擎一次从磁盘申请4-5个区。在默认情况下,InnoDB存储引擎的页的大小为16KB,即一个区中应有64个连续的页。

段(Segment)

段是数据库中的分配单位,由一个或多个区组成,段不要求区与区之间是相邻,不同类型的数据库对象以不同的段形式存在,常见的段有数据段、索引段、回滚段等。

表空间(Tablespace)

表空间可以看做是InnoDB存储引擎逻辑结构的最高层,所有的数据都存放在表空间中。 数据库由一个或多个表空间组成,表空间是由各个段组成的,在一个表空间中可以有一个或多个段,但是一个段只能属于一个表空间,表空间从管理上可以划分为:系统表空间、用户表空间、撤销表空间、临时表空间等。

小结

InnoDB所有的数据都被逻辑地存放在一个空间中,称之为表空间。而表空间由段(segment)、区(extent)、页(page)组成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值