LWLock:buffer_content (BufferContent) - Amazon Aurora

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

LWLock:buffer_content (BufferContent)

LWLock:buffer_content 事件表示工作階段正等待在記憶體中讀取或寫入資料分頁,但另一個工作階段已鎖定該分頁來寫入。在 Aurora PostgreSQL 13 及更新版本中,此等待事件稱為 BufferContent

支援的引擎版本

所有版本的 Aurora PostgreSQL 都支援此等待事件資訊。

Context

為了讀取或操作資料,PostgreSQL 透過共用記憶體緩衝區來存取資料。為了讀取緩衝區,程序以共用模式在緩衝區內容上取得輕量級鎖定 (LWLock)。為了寫入緩衝區,程序以獨佔模式取得該鎖定。共用鎖定允許其他程序同時在該內容上取得共用鎖定。獨佔鎖定阻止其他程序在該內容上得得任何類型的鎖定。

LWLock:buffer_content (BufferContent) 事件表示多個程序正嘗試在特定緩衝區的內容上取得鎖定。

等待變多的可能原因

LWLock:buffer_content (BufferContent) 事件比平時更常出現時,可能表示有效能問題,典型原因包括:

更常並行更新相同資料

以查詢來更新相同緩衝區內容的並行工作階段可能變多。在有大量索引的資料表上,這種爭用可能更明顯。

工作負載資料不在記憶體中

當作用中工作負載處理的資料不在記憶體中時,這些等待事件可能增加。這是因為程序在執行磁碟輸入/輸出操作時持有鎖定更久。

過度使用外部索引鍵限制

外部索引鍵限制會延長程序持有緩衝區內容鎖定的時間。這是因為讀取操作在更新參考的索引鍵時,在該索引鍵上需要共用緩衝區內容鎖定。

動作

根據等待事件的原因,我們會建議不同的動作。您可以使用 Amazon RDS 績效詳情或查詢 LWLock:buffer_content 檢視表來識別 BufferContent (pg_stat_activity) 事件。

改善記憶體內效率

若要讓作用中工作負載資料更有機會留在記憶體中,請分割資料表或擴充執行個體類別的規模。如需資料庫執行個體類別的相關資訊,請參閱 Amazon Aurora 數據庫實例類

減少使用外部索引鍵限制

調查遇到大量 LWLock:buffer_content (BufferContent)等待事件的工作負載如何使用外部引索鍵限制。刪除不必要的外部索引鍵限制。

移除未使用的索引

對於遇到大量 LWLock:buffer_content (BufferContent) 等待事件的工作負載,請識別未使用的索引並移除。