

# 缓冲池的常见任务
<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\_username}} 和 {{master\_password}}。

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

1. 通过调用 `rdsadmin.create_bufferpool` 创建缓冲池。有关更多信息，请参阅 [rdsadmin.create\_bufferpool](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\_username}} 和 {{master\_password}}。

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

1. 通过调用 `rdsadmin.alter_bufferpool` 更改缓冲池。有关更多信息，请参阅 [rdsadmin.alter\_bufferpool](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\_username}} 和 {{master\_password}}。

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

1. 通过调用 `rdsadmin.drop_bufferpool` 删除缓冲池。有关更多信息，请参阅 [rdsadmin.drop\_bufferpool](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\_database\_alias}}、{{master\_username}} 和 {{master\_password}}。

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

1. 刷新缓冲池。

   ```
   db2 flush bufferpools all
   ```