InnoDB表空间类型及特征


InnoDB表空间:可以存储一个或多个InnoDB表和相关索引的数据文件。

1.数据表空间

①系统表空间

内容:存储元数据和缓冲区,包括

  • InnoDB数据字典:表、索引和列元数据
  • 更改缓冲区:对二级索引页面的更改
  • 双写缓冲区:确保崩溃安全写入

特征:

  • 这是一个单一的逻辑存储区,包含数据目录中的一个或多个文件
  • 通常命名,ibdata1、ibdata2、…
  • 每个文件可以是常规文件或裸设备分区(由应用程序直接对它进行读写操作,I/O效率更高)

相关:

  • innodb_data_file_path选项配置磁盘上InnoDB系统表空间文件的大小和物理位置
    • 默认值:ibdata1:12M:autoextend (文件名:大小:自动扩展)
  • 如果系统表空间中有一组文件,则只有该组中的最后一个文件可以自动扩展,其他文件大小固定
  • innodb_file_per_table选项指定MySQL是在系统表空间中还是在单独的.ibd文件中存储新表数据和索引.

②单表文件表空间

内容:包含来自单个表的数据和索引

特征:

  • 为数据库目录中的表 命名的.ibd文件
  • 默认启用
  • 表压缩(不能在同一个通用或系统表空间中混合压缩和未压缩的表)
  • 空间回收(使用TRUNCATE):InnoDB删除并重新创建截断的单表文件表空间,将可用空间释放回文件系统

示例:

  • 在当前数据库的目录中创建fpt_table.ibd文件
CREATE TABLE fpt_table(a INT PRIMARY KEY, b CHAR(4));
  • 使用显式TABLESPACE子句的示例 :
CREATE TABLE fpt_table(a INT PRIMARY KEY, b CHAR(4))
TABLESPACE=innodb_file_per_table;
  • 即使innodb_file_per_table为OFF,也会创建一个file-per-table表空间

③通用表空间

内容:包含来自多个表的数据和索引

特征:

  • 创建表空间时 命名的.ibd文件
  • 不属于任何特定的数据库
  • 删除大量数据的语句的文件系统开销更少(如DROP TABLE或TRUNCATE TABLE)
  • 消耗更少的内存来存储表空间元数据

示例:

  • 在数据目录中创建myts_data1.ibd文件
CREATE TABLESPACE myts ADD DATAFILE 'myts_data1.ibd';
  • 通过指定TABLESPACE子句将新表放置在通用表空间中
CREATE TABLE gen_table(a INT PRIMARY KEY, b CHAR(4)) TABLESPACE=myts;
  • 使用ALTER TABLE将表移动到通用表空间
ALTER TABLE fpt_table TABLESPACE=myts;
定位在数据目录外的表空间
  • 将数据集与其他数据物理分离
  • 将一些数据放在比一般数据更快的设备上

示例:

  • 创建表时使用DATA DIRECTORY子句 :
CREATE TABLE ext_table(a INT PRIMARY KEY, b CHAR(4))
DATA DIRECTORY='/datadir2';

2.还原表空间

  • 默认情况下,还原日志驻留在两个还原表空间中
    • 拥有两个还原表空间会减少每个表空间的最大大小
    • 默认情况下,它们驻留在MySQL数据目录中
      • 通过设置innodb_undo_directory选项可更改它们的位置
  • 还原日志具有与标准数据不同的I/O模式
    • 这些模式使它们非常适合存储在SSD上
  • 设置innodb_rollback_segments选项以更改分配给每个还原表空间的回滚段数量
    • 默认值 128 是允许的最大数量

3.临时表空间

何时创建临时表:

  • 由MySQL在复杂查询中执行一些操作时
    • 内部表使用MEMORY存储引擎
    • 无法直接控制它何时执行此操作
  • 由用户存储用户数据以供在会话中使用时

相关:

  • 临时表空间文件的相对路径、名称、大小和属性取决于innodb_temp_data_file_path的值。
  • 如果未设置值,则所有临时文件都在innodb_data_home_dir目录中名为ibtmp1的12MB自动扩展数据文件中创建。
其他相关
  • 数据库中可以混合使用表空间类型
    • 一些表使用单表文件表空间
    • 一些使用通用表空间的表
  • 为通用表空间指定数据文件时使用相对或绝对路径:
    • 相对路径使用数据目录作为它们的根目录
    • 绝对路径可以引用任何有效的文件系统目标
    • 如,使用绝对路径:
CREATE TABLESPACE ext_ts ADD DATAFILE '/datadir2/ext_ts_data1.ibd';
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值