

# mysql.rds\$1execute\$1operation
<a name="mysql_rds_execute_operation"></a>

执行 InnoDB 操作以管理缓冲池状态和临时表空间。此过程可用于动态控制 InnoDB 操作，例如转储和加载缓冲池状态或截断临时表空间。

## 语法
<a name="mysql_rds_execute_operation-syntax"></a>

```
CALL mysql.rds_execute_operation(operation);
```

## 参数
<a name="mysql_rds_execute_operation-parameters"></a>

 *operation*   
字符串。要执行的 InnoDB 操作。有效值为：  
+ *innodb\$1buffer\$1pool\$1dump\$1now* - 转储缓冲池当前状态的操作。
+ *innodb\$1buffer\$1pool\$1load\$1now* - 加载已保存的缓冲池状态的操作。
+ *innodb\$1buffer\$1pool\$1load\$1abort* - 中止缓冲池加载操作的操作。
+ *innodb\$1truncate\$1temporary\$1tablespace\$1now* - 截断临时表空间的操作。

## 使用说明
<a name="mysql_rds_execute_operation-usage-notes"></a>

只有运行 MariaDB 版本 11.8 及更高版本的 MariaDB 数据库实例才支持此过程。

在执行过程中，会暂时禁用二进制日志记录，以防止复制这些管理命令。

该过程通过记录 [https://mariadb.com/docs/server/security/securing-mariadb/securing-mariadb-encryption/data-in-transit-encryption/securing-connections-for-client-and-server#requiring-tls](https://mariadb.com/docs/server/security/securing-mariadb/securing-mariadb-encryption/data-in-transit-encryption/securing-connections-for-client-and-server#requiring-tls) 表中的所有操作来维护审计跟踪记录。

## 示例
<a name="mysql_rds_execute_operation-examples"></a>

以下示例演示了使用 `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` 命令来缩小临时表空间。

```
 
CALL mysql.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
+-----------+
```

**注意**  
 收缩操作可能需要一些时间，具体取决于临时表空间大小和当前工作负载。

**重要**  
只有当所有影响临时表空间大小的临时表都不再使用时，临时表空间才会缩小。我们建议您在实例上没有任何活动的临时表空间时运行此过程。