本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Aurora PostgreSQL 中的記憶體管理已改善
客戶工作負載若耗盡資料庫執行個體中的可用記憶體,會導致作業系統重新啟動資料庫,造成資料庫無法使用。Aurora PostgreSQL 推出了改善的記憶體管理功能,其會主動防止由於可用記憶體不足所導致的穩定性問題和資料庫重新啟動。根據預設,下列版本可使用此改善:
15.3 版和更新的 15 版本
14.8 版和更新的 14 版本
13.11 版和更新的 13 版本
12.15 版和更新的 12 版
11.20 版和更新的 11 版本
為了改善記憶體管理,其會執行下列動作:
當系統接近重大記憶體壓力時,取消請求更多記憶體的資料庫交易。
當系統耗盡所有實體記憶體並即將耗盡交換記憶體時,一般認為該系統處於重大記憶體壓力之下。在這些情況下,任何請求記憶體的交易將會取消,以試圖降低資料庫執行個體中的記憶體壓力。
基本 PostgreSQL 啟動器和背景工作者 (例如自動真空工作者) 始終受到保護。
設定記憶體管理參數
開啟記憶體管理
此功能預設為開啟。當交易由於記憶體不足而取消時,系統會顯示錯誤訊息,如下列範例所示:
ERROR: out of memory Detail: Failed on request of size 16777216.
關閉記憶體管理
若要關閉此功能,請使用 psql 連線至 Aurora PostgreSQL 資料庫叢集,並將 SET 陳述式用於參數值,如下所述。
對於 Aurora 版本 11.21、12.16、13.12、14.9、15.4 及以前的版本:
postgres=>
SET rds.memory_allocation_guard = true;
rds.memory_allocation_guard
參數的預設值在「參數」群組false
中設定為。
對於 Aurora 版本 12.17、13.13、14.10、15.5 及更高版本:
postgres=>
rds.enable_memory_management = false;
rds.enable_memory_management
參數的預設值在「參數」群組true
中設定為。
在資料庫叢集參數群組中設定這些參數的值,可防止取消查詢。如需有關資料庫叢集參數群組的詳細資訊,請參閱Amazon Aurora 的參數組 RDS。
這些動態參數的值也可以在工作階段層級設定,以在改善的記憶體管理中包含或排除工作階段。
注意
我們不建議關閉此功能,因為這可能會導致因為系統中的記憶體耗盡而導致工作負載引起的資料庫重新啟動的 out-of-memory 錯誤。