MySQL OCP888题解075-表空间和日志文件

文章目录

  • 1、原题
    • 1.1、原题
    • 1.2、答案
  • 2、题目解析
    • 2.1、题干解析
    • 2.2、选项解析
  • 3、知识点
    • 3.1、知识点1:InnoDB System Tablespace系统表空间
    • 3.2、知识点2:InnoDB General Tablespaces通用表空间
  • 4、总结

1、原题

1.1、原题

MySQL OCP888题解075-表空间和日志文件_第1张图片

1.2、答案

D、F

2、题目解析

2.1、题干解析

本题主要考察MySQL表空间的相关知识。

2.2、选项解析

  1. 二进制日志单独保存在二进制日志文件中,所以选项A错误。
  2. 通用表空间是需要单独创建的,不被包含在系统表空间中,所以选项B错误。
  3. 如果MySQL配置了file-per-table参数,则系统表空间就不是创建新表的默认位置,所以选项C错误。
  4. MySQL有系统表空间、通用表空间和file-per-table表空间三种。通用表空间和file-per-table表空间只保存表的索引和数据,undo日志仍然在系统表空间保存。如果表用的不是file-per-table文件也不是通用表空间,那么表的数据和索引也保存在系统表空间中。除了表的数据和索引,系统表空间还保存了InnoDB数据字典、doublewrite buffer(双写缓冲区)、change buffer(变更缓冲区)和undo logs(撤销日志)的存储区域,其中undo日志也是可以指定另外文件单独保存,但默认保存在系统表空间。所以选项D、F正确。
  5. redo log默认保存在iblog文件里,所以选项E错误。

3、知识点

3.1、知识点1:InnoDB System Tablespace系统表空间

  • 系统表空间的存储内容:
    1. InnoDB数据字典、doublewrite buffer(双写缓冲区)、change buffer(变更缓冲区)和undo logs(撤销日志)的存储区域。
    2. 如果表用的不是file-per-table文件也不是通用表空间,那么表的数据和索引也保存在系统表空间中。
  • 系统表空间数据文件的大小、数量和位置:系统表空间数据文件的大小、数量和尾椎由innodb_data_file_path启动选项定义。系统表空间可以有一个或多个数据文件。默认情况下,在数据目录中创建一个名为ibdata1的系统表空间数据文件。

官方参考文档

3.2、知识点2:InnoDB General Tablespaces通用表空间

通用表空间是一个共享的InnoDB表空间,使用CREATE TABLESPACE语法创建,提供以下功能。

  • 多表数据和索引的存储:与系统表空间类似,通用表空间是共享表空间,能够存储多个表的数据和索引。
  • 节省内存:通用表空间相比file-per-table表空间有一个潜在的内存优势,即相同数量的表消耗更少的内存。
  • 独立于数据目录的存储:通用表空间的数据文件可以放在相对于或独立于MySQL数据目录的目录中,这样允许你单独管理关键表的性能,为特定的表设置RAID或DRBD,或者将表绑定到特定的磁盘上。
  • 使用方法1:在数据目录中创建一个普通表空间。
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE 'ts1.ibd' Engine=InnoDB;

  • 使用方法2:在数据目录之外的目录中创建一个普通表空间。
mysql> CREATE TABLESPACE `ts1` ADD DATAFILE '/my/tablespace/directory/ts1.ibd' Engine=InnoDB;

官方参考文档

4、总结

  1. MySQL有系统表空间、通用表空间和file-per-table表空间三种。通用表空间和file-per-table表空间只保存表的索引和数据,undo日志仍然在系统表空间保存。如果表用的不是file-per-table文件也不是通用表空间,那么表的数据和索引也保存在系统表空间中。
  2. 系统表空间的存储内容:
    1. InnoDB数据字典、doublewrite buffer(双写缓冲区)、change buffer(变更缓冲区)和undo logs(撤销日志)的存储区域。
    2. 如果表用的不是file-per-table文件也不是通用表空间,那么表的数据和索引也保存在系统表空间中。
  3. 系统表空间数据文件的大小、数量和位置:系统表空间数据文件的大小、数量和尾椎由innodb_data_file_path启动选项定义。系统表空间可以有一个或多个数据文件。默认情况下,在数据目录中创建一个名为ibdata1的系统表空间数据文件。
  4. 通用表空间是一个共享的InnoDB表空间,需要使用CREATE TABLESPACE语法进行显式的创建,类似于系统表空间,相比file-per-table的优点在于可以存储多张表因此节省内存,相比系统表空间的优点在于独立于数据目录的存储。
  5. 二进制日志、redo日志默认都有单独的文件保存,undo日志默认保存在系统表空间,但也可以单独存储到指定文件中。

你可能感兴趣的:(MySQL,mysql,数据库,服务器,ocp,sql)