

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Aurora PostgreSQL 中的記憶體管理已改善
<a name="AuroraPostgreSQL.BestPractices.memory.management"></a>

Aurora PostgreSQL 現在包含進階記憶體管理功能，可在不同的工作負載下最佳化資料庫效能和彈性。這些改善有助於 Aurora PostgreSQL 維持一致的可用性和回應能力，即使在高記憶體需求的期間也是如此。

在下列適用於佈建執行個體的 Aurora PostgreSQL 版本中，此功能依預設會提供並啟用：
+ 15.3 及所有更高次要版本
+ 14.8 及更高次要版本
+ 13.11 及更高次要版本
+ 12.15 及更高次要版本
+ 11.20 及更高次要版本

在下列適用於 Aurora Serverless 執行個體的 Aurora PostgreSQL 中，此功能依預設會提供並啟用：
+ 16.3 及所有更高次要版本
+ 15.7 及所有更高次要版本
+ 14.12 及更高次要版本
+ 13.15 及更高次要版本

 當客戶工作負載用完所有可用的可用記憶體時，作業系統可能會重新啟動資料庫來保護資源，導致暫時無法使用。Aurora PostgreSQL 中新的記憶體管理改進會在系統遇到高記憶體壓力時主動取消特定交易，以協助維持資料庫穩定性。

改善記憶體管理的主要功能如下：
+ 當系統接近重大記憶體壓力時，取消請求更多記憶體的資料庫交易。
+ 當系統耗盡所有實體記憶體並即將耗盡交換記憶體時，一般認為該系統處於重大記憶體壓力之下。在這些情況下，任何請求記憶體的交易將會取消，以試圖降低資料庫執行個體中的記憶體壓力。
+ 基本 PostgreSQL 啟動器和背景工作者 (例如自動真空工作者) 始終受到保護。

## 處理記憶體管理參數
<a name="AuroraPostgreSQL.BestPractices.memory.management.configuring"></a>

**開啟記憶體管理**  
此功能預設為開啟。當交易由於記憶體不足而取消時，系統會顯示錯誤訊息，如下列範例所示：

```
ERROR: out of memory Detail: Failed on request of size 16777216.
```

**關閉記憶體管理**  
若要關閉此功能，請使用 psql 連線至 Aurora PostgreSQL 資料庫叢集，並針對參數值使用 SET 陳述式，如下所述。

**注意**  
我們建議您保持啟用記憶體管理。這有助於防止因記憶體耗盡而導致工作負載引發資料庫重新啟動的潛在記憶體不足錯誤。

下表顯示如何關閉不同 Aurora PostgreSQL 版本的記憶體管理功能：


| Aurora PostgreSQL 版本 | 參數 | 預設 | 在工作階段層級關閉記憶體管理的命令 | 
| --- | --- | --- | --- | 
| 11.20、11.21、12.15、12.16、13.11、13.12、14.8、14.9、15.3、15.4 | `rds.memory_allocation_guard` | `false` | `SET rds.memory_allocation_guard = true;` | 
| 12.17、13.13、14.10、15.5 及更高版本 | `rds.enable_memory_management` | `true` | `SET rds.enable_memory_management = false;` | 

**注意**  
在 Aurora PostgreSQL 12.17、13.13、14.10、15.5 和更高版本中已棄用 `rds.memory_allocation_guard` 參數。

在資料庫叢集參數群組中設定這些參數的值，可防止查詢遭到取消。如需資料庫叢集參數群組的詳細資訊，請參閱[Amazon Aurora 的參數群組](USER_WorkingWithParamGroups.md)。

## 限制
<a name="AuroraPostgreSQL.BestPractices.memory.management.limitations"></a>
+ db.t3.medium 執行個體類別不支援此功能。