啟動 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。具體方法會因部署類型而異:
docker run --name CONTAINER_NAME -e INITDB_ARGS="-c shared_buffers=1GB" $imagedocker run --name CONTAINER_NAME $image -c shared_buffers=1GB
將 CONTAINER_NAME 替換為您在安裝時指派給 AlloyDB Omni 容器的名稱。
盡可能提高查詢效能
shared_buffers 參數的預設值適用於一般情境。
不過,您可以調整值來獲得最佳成效。如果您選擇依賴 shared_buffers 的預設值來推斷共用緩衝區上限,請使用 cgroup memory.max 值來影響計算。
資料欄引擎記憶體
動態 shared_buffers 與資料欄引擎記憶體無關。啟用資料欄引擎後,動態 shared_buffers 大小可透過下列方式計算:從系統或 cgroup 可用的總記憶體 80% 中,扣除資料欄引擎使用的記憶體量。
大型分頁
巨頁可提升資料庫效能。AlloyDB Omni 會盡可能明確管理巨頁,否則會依賴作業系統的透明巨頁 (THP) 功能。如果兩種大型分頁類型都不支援,AlloyDB Omni 會改用 4k 頁面,並在 Docker 容器記錄docker logs $container_name 中顯示警告,以及設定大型分頁的具體操作說明。如需如何啟動容器的操作說明,請參閱「啟動 AlloyDB Omni」。
警告訊息類似於下列內容:
HINT: Please either execute the all-in-one setup script:
docker run --rm --privileged $image setup-host
OR manually execute:
echo within_size | sudo tee /sys/kernel/mm/transparent_hugepage/shmem_enabled
sudo sysctl -w vm.nr_overcommit_hugepages=1048576
在執行階段自動管理記憶體
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 會在 Docker 容器記錄中記錄類似下列範例的項目:
WARNING: Sending SIGTERM to pid=12345 NSpid=67890 (VA size = 1024MB) (RSS size = 512MB)