本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
) 等待事件的工作負載,請識別未使用的索引並移除。