mysql.rds_execute_operation
执行 InnoDB 操作以管理缓冲池状态和临时表空间。此过程可用于动态控制 InnoDB 操作,例如转储和加载缓冲池状态或截断临时表空间。
语法
CALL mysql.rds_execute_operation(operation);
参数
- operation
-
字符串。要执行的 InnoDB 操作。有效值为:
innodb_buffer_pool_dump_now - 转储缓冲池当前状态的操作。
innodb_buffer_pool_load_now - 加载已保存的缓冲池状态的操作。
innodb_buffer_pool_load_abort - 中止缓冲池加载操作的操作。
innodb_truncate_temporary_tablespace_now - 截断临时表空间的操作。
使用说明
只有运行 MariaDB 版本 11.8 及更高版本的 MariaDB 数据库实例才支持此过程。
在执行过程中,会暂时禁用二进制日志记录,以防止复制这些管理命令。
该过程通过记录 mysql.rds_history
示例
以下示例演示了使用 mysql.rds_execute_operation 缩减临时表空间:
要检查当前临时表空间大小,请运行以下查询:
SELECT FILE_SIZE FROM information_schema.innodb_sys_tablespaces WHERE name LIKE 'innodb_temporary'; +------------+ | FILE_SIZE | +------------+ | 6723469312 | -- 6.3 GB +------------+
删除临时表时,不会减少全局表空间中的存储使用量。要减小全局表空间的大小,请运行 mysql.rds_execute_operation 命令来缩小临时表空间。
CALLmysql.rds_execute_operation('innodb_truncate_temporary_tablespace_now');Query OK, 2 rows affected (0.004 sec)
运行该过程后,请验证空间是否已回收。
SELECT FILE_SIZE FROM information_schema.innodb_sys_tablespaces WHERE name LIKE 'innodb_temporary'; +-----------+ | FILE_SIZE | +-----------+ | 12582912 | -- 12 MB +-----------+
注意
收缩操作可能需要一些时间,具体取决于临时表空间大小和当前工作负载。
重要
只有当所有影响临时表空间大小的临时表都不再使用时,临时表空间才会缩小。我们建议您在实例上没有任何活动的临时表空间时运行此过程。