Innodb核心原理之磁盘结构

2024年 6月 21日 42.8k 0

innodb架构图

innodb架构主要由两部分组成:in-memory & on-disk,即内存结构和磁盘结构。

架构图:
Innodb核心原理之磁盘结构-1

这里单独介绍一下磁盘结构。
Innodb核心原理之磁盘结构-2

innodb磁盘结构

1.InnoDB的磁盘结构中表空间的作用?

表空间
是innodb物理存储中最高层。
系统表空间
1)系统表空间
物理文件:ibdata1
系统表空间是一个共享的表空间,该空间数据文件默认是ibdata1,通过如下参数查看:

show variables like '%innodb_data_file_path%';

默认文件名ibdata1、大小12M、自动扩展。
在设定了系统表空间自动扩展后,则不可缩减,即使删除系统表空间中的表和索引,也不会缩减其在磁盘中的大小(只是对已删的做标记)。
2)系统表空间
包含的部分:

  • 数据字典:其中包含了表结构信息、数据库名、表名、字段类型和信息、视图、索引、MySQL版本等元数据信息。
  • 双写缓冲:用于保证写入磁盘时页数据的完整性,防止发生写失效的问题。
  • 修改缓冲:内存中change buffer对应的持久化的区域,也是为了保证数据完整性。
  • 回滚日志:记录数据修改前的状态的逻辑日志,实现事务回滚和多版本并发控制。
    3)独立表空间
    每个表都有自己独立的表空间,每个表的数据和索引都会存在自己的表空间当中。
    独立表空间的作用:可以实现单表在不同数据库的文件移动。
    独立表空间的存储空间是可以回收的(在删除或清空后)。
    4)通用表空间
    类似系统表空间,也是共享的,可以存储多个表的数据。相比于独立表空间来说,通用表空间由于是多表共享的空间,消耗的内存更少一点,占用的磁盘空间也会更小一点。
    创建通用表空间语法:

create tablespace ts1 add datafile 'ts1.ibd' file_block_size=16384;

file_block_size=16384即指定一页最小16K。文件会被创建在data_dir中。
查看通用表空间语法:

select * from information_schema.innodb_sys_tablespaces where name = 'ts1';

5)回滚表空间
用来保存undo log。undo log默认是保存在系统表空间ibdata1中的,8.0有单独的文件。
查看回滚表空间路径:

show variables like '%innodb_undo_directory%';

如果显示./则表示系统表空间中,8.0默认表空间名称为undo_001,undo_002。

未完待续

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论