本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
RDS for PostgreSQL 記憶體分成共用和本機。
RDS for PostgreSQL 中的共用記憶體
RDS for PostgreSQL 在執行個體啟動時配置共用記憶體。共用記憶體分成多個子區域。下列各節提供最重要部分的說明。
共用緩衝區
共用緩衝集區是一種 RDS for PostgreSQL 記憶體區域,其中保留應用程式連線正在使用或已使用的所有分頁。分頁是記憶體形式的磁碟區塊。共用緩衝集區快取從磁碟讀取的資料區塊。集區可減少從磁碟重新讀取資料的次數,讓資料庫運作更有效率。
每個資料表和索引儲存為一連串固定大小的分頁。每個區塊包含多個元組,對應於資料列。元組可以存放在任何分頁中。
共用緩衝集區的記憶體有限。如果新請求需要的分頁不在記憶體中,且已沒有更多記憶體,RDS for PostgreSQL 會移出較不常用的分頁來容納請求。移出政策以時鐘掃描演算法實作。
shared_buffers
參數決定伺服器專用於快取資料的記憶體數量。預設值會根據資料庫執行個體的可用記憶體,設定為{DBInstanceClassMemory/32768}
位元組。
預寫日誌 (WAL) 緩衝區
預寫日誌 (WAL) 緩衝區保留交易資料,供 RDS for PostgreSQL 稍後寫入持久性儲存。RDS for PostgreSQL 可以透過 WAL 機制達成下列目標:
-
在故障後復原資料
-
避免頻繁寫入磁碟以減少磁碟輸入/輸出
當用戶端變更資料時,RDS for PostgreSQL 會將變更寫入 WAL 緩衝區。當用戶端發出 COMMIT
時,WAL 寫入器程序會將交易資料寫入 WAL 檔案。
wal_level
參數會決定將多少資訊寫入 WAL,並具有可能的值,例如 minimal
、 replica
和 logical
。
RDS for PostgreSQL 中的本機記憶體
每個後端程序會配置本機記憶體來處理查詢。
工作記憶體區域
工作記憶體區域為執行排序和雜湊的查詢保留暫存資料。例如,含有 ORDER BY
子句的查詢執行排序。查詢在雜湊聯結和彙總中使用雜湊表。
此work_mem
參數是寫入暫存磁碟檔案之前,內部排序操作和雜湊資料表要使用的記憶體量,以 MB 為單位。預設值為 4 MB。多個工作階段可以同時執行,每個工作階段可以平行執行維護操作。因此,使用的總工作記憶體可能是 work_mem
設定的倍數。
維護工作記憶體區域
維護工作記憶體區域快取維護操作的資料。這些操作包括清理、建立索引和新增外部索引鍵。
maintenance_work_mem
參數會指定維護操作所使用的記憶體數量上限,以 MB 為單位。預設值為 64 MB。一個資料庫工作階段一次只能執行一個維護操作。
暫時緩衝區域
暫時緩衝區域快取每個資料庫工作階段的暫存資料表。
每個工作階段視需要配置暫存緩衝區,以您指定的限制為上限。工作階段結束時,伺服器會清除緩衝區。
temp_buffers
參數會設定每個工作階段使用的臨時緩衝區數量上限,以 MB 為單位。預設值為 8 MB。在工作階段內第一次使用暫存資料表之前,您可以變更 temp_buffers
值。