本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用共用計劃快取
概觀
Aurora PostgreSQL 使用process-per-user模型,其中每個用戶端連線都會建立專用的後端程序。每個後端程序都會針對預備陳述式維護自己的本機計劃快取。由於這些快取無法在程序之間共用,因此使用許多預備陳述式的應用程式可能會在不同的後端程序中建立重複的快取,進而增加記憶體用量。
Aurora PostgreSQL 17.6 版和更新版本以及 16.10 版和更新版本推出共用計劃快取功能。當您啟用此功能時,後端程序可以共用一般計劃,從而減少記憶體用量,並透過消除重複的計劃產生來改善效能。
共用計劃快取使用下列元件做為其快取金鑰:
查詢字串 (包括註解)
規劃人員相關的 GUC 參數 (包括
search_path)使用者 ID
資料庫 ID
執行個體重新啟動會重設共用快取。
Parameters
下表說明控制共用計劃快取功能的參數:
| 參數 | 描述 | 預設 | 允許 |
|---|---|---|---|
apg_shared_plan_cache.enable |
開啟或關閉共用計劃快取 | 0 (關閉) | 0, 1 |
apg_shared_plan_cache.max |
快取項目的數量上限 | 200–1000 (視執行個體大小而定) | 100–50000 |
apg_shared_plan_cache.min_size_per_entry |
在共用快取中存放的計劃大小下限。較小的計劃使用本機快取來最佳化 OLTP 效能。 | 16 KB | 0–32768 (KB) |
apg_shared_plan_cache.max_size_per_entry |
共用快取的計劃大小上限。較大的計劃只會存放成本資訊。 | 256 KB–4 MB (視執行個體大小而定) | 0–32768 (KB) |
apg_shared_plan_cache.idle_generic_plan_release_timeout |
閒置工作階段發佈本機一般計劃的時間。較低的值可節省記憶體;較高的值可能會改善效能。 | 10 秒 | 0–2147483647 (毫秒) |
注意
您可以修改所有參數,而無需重新啟動。
監控檢視和函數
apg_shared_plan_cache()– 顯示詳細的快取項目資訊 (命中、有效性、時間戳記)apg_shared_plan_cache_stat()– 顯示執行個體層級統計資料 (移出、失效)apg_shared_plan_cache_reset()– 移除apg_shared_plan_cache()和 中的所有項目apg_shared_plan_cache_stat()apg_shared_plan_cache_remove(cache_key)– 從項目符合apg_shared_plan_cache()的項目中移除項目cache_key
限制
僅適用於預備陳述式,不會快取 PL/pgSQL 陳述式
不會快取包含暫存資料表或目錄資料表的查詢
不會快取依賴 RLS 的查詢 (資料列層級安全性)
每個複本都會維護自己的快取 (無跨複本共用)