前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >InnoDB数据存储结构概述(一)

InnoDB数据存储结构概述(一)

原创
作者头像
堕落飞鸟
发布2023-05-11 10:04:06
5940
发布2023-05-11 10:04:06
举报
文章被收录于专栏:飞鸟的专栏

InnoDB的数据文件

InnoDB使用一个或多个数据文件存储数据和索引。每个数据文件称为表空间,其中包含一个或多个段。每个段都是固定大小的,通常为1MB或2MB。表空间可以是自动扩展的,也可以是固定大小的。

InnoDB存储引擎默认情况下使用的数据文件扩展名是.ibd。每个InnoDB表都存储在其自己的.ibd文件中。

InnoDB的表结构

InnoDB使用B+树数据结构存储表和索引。B+树是一种平衡树,可以快速搜索、插入和删除数据。在B+树中,所有数据都存储在叶子节点上,而非叶子节点仅存储索引信息。这种结构可以大大减少磁盘I/O操作,提高查询性能。

每个InnoDB表都包含一个称为聚簇索引的索引,该索引定义了表中数据的物理顺序。聚簇索引通常是主键索引。如果没有定义主键,则InnoDB将选择唯一索引来作为聚簇索引。如果表中没有唯一索引,则InnoDB将创建一个隐藏的主键列,使用该列作为聚簇索引。

除了聚簇索引外,InnoDB表还可以包含多个非聚簇索引。非聚簇索引也是B+树结构,用于提高查询效率。非聚簇索引存储记录的键值及其对应的聚簇索引键值,以便快速查找数据。

InnoDB的行格式

在InnoDB中,每行数据都采用固定长度的行格式存储在磁盘上。行格式定义了每个数据类型在磁盘上的存储方式。InnoDB支持两种行格式:Compact和Redundant。

Compact行格式是默认行格式,它将NULL值和固定长度的数据类型(如整数和日期)存储为二进制表示。对于可变长度的数据类型(如VARCHAR和TEXT),Compact行格式仅存储实际使用的字节数。

Redundant行格式存储NULL值和固定长度数据类型的文本表示,而不是二进制表示。它还将可变长度的数据类型存储为长度前缀和数据本身的组合。Redundant行格式通常用于旧的InnoDB表中,不建议在新表中使用。

InnoDB的页结构

InnoDB将数据和索引组织成大小为16KB的页面。每个页面都包含一个页头和页体。

页头包含页面的元数据信息,如页面的类型、大小、页号等。页体包含数据和索引信息。页面可以包含多个行,每个行都包含固定长度的数据。

为了提高性能和可靠性,InnoDB使用多版本并发控制(MVCC)来管理事务的并发访问。MVCC允许多个事务同时访问同一行,而不会互相干扰。每个事务可以看到数据库中的快照,而不是实时数据。

InnoDB的存储结构

InnoDB的存储结构可以分为以下几个部分:

  1. 数据字典:存储数据库的元数据信息,如表和索引的定义、列类型、长度等。
  2. 表空间:存储表和索引数据的物理文件。每个表和索引都存储在自己的表空间中。
  3. 段:每个表空间包含一个或多个段,每个段都有一个唯一的段ID。段包含一个或多个页面。
  4. 页面:大小为16KB的数据块,存储表和索引数据。每个页面都有一个唯一的页面号,用于在磁盘上进行定位。
  5. 行:每个页面包含多个行,每行存储一个记录。行格式定义了行存储的数据类型和存储方式。
  6. 索引:InnoDB使用B+树数据结构存储索引,聚簇索引用于存储表数据的物理顺序,非聚簇索引用于提高查询效率。
  7. MVCC:多版本并发控制,允许多个事务同时访问同一行,保证事务的并发访问性能和可靠性。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • InnoDB的数据文件
  • InnoDB的表结构
  • InnoDB的行格式
  • InnoDB的页结构
  • InnoDB的存储结构
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档