RDS for PostgreSQL 記憶體 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

RDS for PostgreSQL 記憶體

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,可能的值包括 minimalreplicalogical

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 值。