MySQL数据库中的架构之磁盘架构

 先看看磁盘结构的架构图

1). System Tablespace

        系统表空间是更改缓冲区的存储区域。如果表是在系统表空间而不是每个表文件或通用表空间中创建 的,它也可能包含表和索引数据。(在 MySQL5.x 版本中还包含 InnoDB 数据字典、 undolog )
        参数:innodb_data_file_path
        系统表空间,默认的文件名叫 ibdata1

2). File-Per-Table Tablespaces

        如果开启了innodb_file_per_table开关 ,则每个表的文件表空间包含单个InnoDB表的数据和索引 ,并存储在文件系统上的单个数据文件中。

        开关参数:innodb_file_per_table ,该参数默认开启。

3). General Tablespaces

        通用表空间,需要通过 CREATE TABLESPACE 语法创建通用表空间,在创建表时,可以指定该表空间。

       创建表空间:

        CREATE TABLESPACE ts_name ADD DATAFILE 'file_name' ENGINE = engine_name;

       创建表时指定表空:

        CREATE TABLE xxx ... TABLESPACE ts_name;

4). Undo Tablespaces

        撤销表空间,MySQL实例在初始化时会自动创建两个默认的undo表空间(初始大小16M),用于存储undo log日志。

5). Temporary Tablespaces

        InnoDB 使用会话临时表空间和全局临时表空间。存储用户创建的临时表等数据。

6). Doublewrite Buffer Files

        双写缓冲区,innoDB引擎将数据页从Buffer Pool刷新到磁盘前,先将数据页写入双写缓冲区文件中,便于系统异常时恢复数据。

7). Redo Log

        重做日志,是用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log
buffer )以及重做日志文件( redo log , 前者是在内存中,后者在磁盘中。当事务提交之后会把所
有修改信息都会存到该日志中 , 用于在刷新脏页到磁盘时 , 发生错误时 , 进行数据恢复使用。
        
        以循环方式写入重做日志文件,涉及两个文件:
        ib_logfile0和ib_logfile1

猜你喜欢

转载自blog.csdn.net/weixin_59526725/article/details/126036706
今日推荐