

# 缓冲池的常见任务
<a name="db2-managing-buffer-pools"></a>

您可以针对 RDS for Db2 数据库创建、更改或删除缓冲池。创建、更改或删除缓冲池需要更高级别的 `SYSADM` 或 `SYSCTRL` 权限，而主用户无法获得相应的权限。因此，可改为使用 Amazon RDS 存储过程。

您也可以刷新缓冲池。

**Topics**
+ [创建缓冲池](#db2-creating-buffer-pool)
+ [更改缓冲池](#db2-altering-buffer-pool)
+ [删除缓冲池](#db2-dropping-buffer-pool)
+ [刷新缓冲池](#db2-flushing-buffer-pools)

## 创建缓冲池
<a name="db2-creating-buffer-pool"></a>

要创建 RDS for Db2 数据库的缓冲池，请调用 `rdsadmin.create_bufferpool` 存储过程。有关更多信息，请参阅 IBM Db2 文档中的 [CREATE BUFFERPOOL 语句](https://www.ibm.com/docs/en/db2/11.5?topic=statements-create-bufferpool)。

**创建缓冲池**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.create_bufferpool` 创建缓冲池。有关更多信息，请参阅 [rdsadmin.create\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-create-buffer-pool)。

   ```
   db2 "call rdsadmin.create_bufferpool(
       'database_name', 
       'buffer_pool_name', 
       buffer_pool_size, 
       'immediate', 
       'automatic', 
       page_size, 
       number_block_pages, 
       block_size)"
   ```

## 更改缓冲池
<a name="db2-altering-buffer-pool"></a>

要更改 RDS for Db2 数据库的缓冲池，请调用 `rdsadmin.alter_bufferpool` 存储过程。有关更多信息，请参阅 IBM Db2 文档中的 [ALTER BUFFERPOOL 语句](https://www.ibm.com/docs/en/db2/11.5?topic=statements-alter-bufferpool)。

**更改缓冲池**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.alter_bufferpool` 更改缓冲池。有关更多信息，请参阅 [rdsadmin.alter\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-alter-buffer-pool)。

   ```
   db2 "call rdsadmin.alter_bufferpool(
       'database_name', 
       'buffer_pool_name', 
       buffer_pool_size, 
       'immediate', 
       'automatic', 
       change_number_blocks, 
       number_block_pages, 
       block_size)"
   ```

## 删除缓冲池
<a name="db2-dropping-buffer-pool"></a>

要删除 RDS for Db2 数据库的缓冲池，请调用 `rdsadmin.drop_bufferpool` 存储过程。有关更多信息，请参阅 IBM Db2 文档中的[删除缓冲池](https://www.ibm.com/docs/en/db2/11.5?topic=pools-dropping-buffer)。

**重要**  
确保没有为要删除的缓冲池分配任何表空间。

**删除缓冲池**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到 `rdsadmin` 数据库。在以下示例中，用您自己的信息替换 *master\$1username* 和 *master\$1password*。

   ```
   db2 "connect to rdsadmin user master_username using master_password"
   ```

1. 通过调用 `rdsadmin.drop_bufferpool` 删除缓冲池。有关更多信息，请参阅 [rdsadmin.drop\$1bufferpool](db2-sp-managing-buffer-pools.md#db2-sp-drop-buffer-pool)。

   ```
   db2 "call rdsadmin.drop_bufferpool(
       'database_name', 
       'buffer_pool_name')"
   ```

## 刷新缓冲池
<a name="db2-flushing-buffer-pools"></a>

您可以刷新缓冲池以强制实施检查点，以便 RDS for Db2 将页面从内存写入存储。

**注意**  
您不需要刷新缓冲池。Db2 在提交事务之前同步写入日志。脏页可能仍在缓冲池中，但是 Db2 会将它们异步写入存储。即使系统意外关闭，当您重启数据库时，Db2 也会自动执行崩溃恢复。在崩溃恢复期间，Db2 将已提交的更改写入数据库，或者回滚对未提交事务的更改。

**刷新缓冲池**

1. 使用 RDS for Db2 数据库实例的主用户名和主密码连接到您的 Db2 数据库。在以下示例中，用您自己的信息替换 *rds\$1database\$1alias*、*master\$1username* 和 *master\$1password*。

   ```
   db2 connect to rds_database_alias user master_username using master_password
   ```

1. 刷新缓冲池。

   ```
   db2 flush bufferpools all
   ```