啟動 AlloyDB Omni 時,您可以決定共用緩衝區的上限。如果您未設定上限,AlloyDB Omni 會自動將共用緩衝區備份大小設為系統記憶體的 80%。共用緩衝區的初始備份大小可能與上限不同。
AlloyDB Omni 包含智慧型記憶體工作站,可持續監控記憶體狀態,並調整共用緩衝區備份大小,在快取資料時達到最佳效能。

根據預設,shared_buffers 參數會設為 0,這個特殊值會將 shared buffers 快取大小上限設為系統記憶體的 80%。AlloyDB Omni 的起價為上限的 10%。shared_buffers如果 shared_buffers 遭自訂值覆寫,AlloyDB Omni 會將該值視為 shared_buffers 大小的上限,並從指定的自訂大小開始。
如要指定自訂大小,請將 shared_buffers 設為 1GB。具體方法會因部署類型而異:
shared_buffers 參數。套用變更後,您必須重新啟動服務。
方法 1:編輯設定檔
開啟
postgresql.conf檔案進行編輯。新增或修改下列程式碼:
shared_buffers = 1GB儲存檔案並重新啟動 AlloyDB Omni 服務:
sudo systemctl restart alloydbomniMAJOR_VERSION將
MAJOR_VERSION替換為 AlloyDB Omni 安裝的主要版本,例如18。
方法 2:使用
ALTER SYSTEM指令使用 SQL 用戶端連線至資料庫執行個體。
執行下列指令:
ALTER SYSTEM SET shared_buffers = '1GB';重新啟動 AlloyDB Omni 服務:
sudo systemctl restart alloydbomniMAJOR_VERSION將
MAJOR_VERSION替換為 AlloyDB Omni 安裝的主要版本,例如18。
盡可能提高查詢效能
shared_buffers 參數的預設值適用於一般情境。
不過,您可以調整值來獲得最佳成效。如果您選擇依賴 shared_buffers 的預設值來推斷共用緩衝區上限,請使用 cgroup memory.max 值來影響計算。
資料欄引擎記憶體
動態 shared_buffers 與資料欄引擎記憶體無關。啟用資料欄引擎後,動態 shared_buffers 大小可透過下列方式計算:從系統或 cgroup 可用的總記憶體 80% 中,扣除資料欄引擎使用的記憶體量。
大型分頁
巨頁可提升資料庫效能。AlloyDB Omni 會盡可能明確管理巨頁,否則會依賴作業系統的透明巨頁 (THP) 功能。如果系統不支援任何一種大型分頁類型,AlloyDB Omni 會改用 4k 頁面,並在資料庫記錄中列印警告,以及設定大型分頁的具體操作說明。警告訊息類似於下列內容:
HINT: Please manually execute:
echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
sudo sysctl -w vm.nr_overcommit_hugepages="$(/usr/bin/awk '/MemTotal/ { printf "%.0f", $2/1024 }' /proc/meminfo)"
在執行階段自動管理記憶體
AlloyDB Omni 會持續監控系統負載,並調整記憶體用量,以提升效能。具體來說,您可能會發現以下情況:
- 動態
shared_buffers大小變更 - 當系統記憶體用量偏低時,AlloyDB Omni 會增加動態
shared_buffers大小;當系統記憶體用量偏高時,則會減少大小。AlloyDB Omni 發行版本內含 `g_memory` 擴充功能。如要啟用這項功能並監控動態 `shared_buffers` 大小,請執行下列指令:CREATE EXTENSION IF NOT EXISTS g_memory; SELECT g_dynamic_shared_size();
- 系統記憶體極低時終止 PostgreSQL 連線
-
當 AlloyDB Omni 偵測到系統記憶體嚴重不足時,會嘗試刪除最耗用記憶體的 PostgreSQL 連線,直到負載降回合理程度為止。發生這類事件時,AlloyDB Omni 會在資料庫記錄中記錄類似下列範例的項目:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)