数据库管理平台DMP

关注
深信服数据库管理平台(DMP)提供MySQL、Oracle的RDS功能,支持全生命周期管理、自动MySQL主从切换、故障自愈、事务一致性备份、监控告警等,能够实现业务快速上线、资源快速分发、数据安全保护,提供SLA保障,使数据库运维复杂度大幅下降,帮助客户减少被动性救火工作,专注业务创新。
点击可切换产品版本
知道了
DMP 2.3.0

使用 InnoDB 表空间改善崩溃恢复时间
  • 阅读权限:游客
  • 下载
  • 分享
  • 收藏

更新时间:2023-08-28

MySQL中的所有表均由表定义、数据和索引组成。MySQL 存储引擎InnoDB将表数据和索引存储在表空 间中。InnoDB创建全局共享的表空间,其中包括数据字典和其他相关元数据,并且它可能包含表数据和索 引。InnoDB还可以为每张表创建单独的表空间和分区。这些单独的表空间存储在后缀名为 .ibd的文件中, 并且每个表空间的头部包含一个唯一识别编号。

innodb_file_per_table提供一个属于MySQL参数组的参数,名称为RDS。这些参数控制 InnoDB是否(通过将参数值设置为0)向共享表空间或(通过将参数值设置为 1)向单个表空间添加新的表 数据和索引。RDSinnodb_file_per_table的默认值设置为1,以便删除单独的InnoDB表 并回收用于数据库实例的表所占用的空间。在大多数使用案例中,推荐将 innodb_file_per_table参数 设置为1

当表特别多时(例如,当使用标准(磁性)或通用SSD存储时,有超过1000张表,或当使用预置的IOPS存 储时,有超过10000张表),应将innodb_file_per_table参数设置为0。当将该参数设置为0时,不 会创建独立表空间,这样可以节省数据库崩溃恢复所需的时间。

MySQL在崩溃恢复循环期间处理每个元数据文件 (包括表空间)。当有多个表空间时,与  MySQL用于处理 数以千计的表空间文件的时间相比,MySQL 用于处理共享表空间中的元数据信息的时间可以忽略不计。因 为表空间编号存储在每个文件的头部,读取所有表空间文件的总时间可能需要长达数小时。例如,在崩溃恢 复循环期间,标准存储空间上的一百万个 InnoDB表空间可能需要58个小时的处理时间。在一些案例 中,InnoDB可能会在一个崩溃恢复循环后确定它需要额外清理,因此,它会开始另一个崩溃恢复循环,这 会使恢复时间延长。请记住,崩溃恢复循环也会引起回滚事务、修复损坏页面和除表空间信息处理以外的其 他操作。

因为innodb_file_per_table参数存储在参数组中,所以可通过编辑数据库实例所使用的参数组来更改 该参数值,无需重新启动该数据库实例。更改该设置后,例如从 1(创建独立的表)改为0(使用共享的表空 间),新的InnoDB表将添加到共享的表空间,而现有的表继续使用独立的表空间。要将 InnoDB表移动到共 享的表空间,必须使用ALTERTABLE命令。

文档让我的问题处理变得简单了
选择标签:
更多意见:
手机号码:
如果未能解决您的问题,您可以使用 在线客服 寻求帮助
在线客服
文档让我的问题处理变得简单了