

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

# LWLock:buffer\$1mapping
<a name="apg-waits.lwl-buffer-mapping"></a>

此事件表示工作階段正在等待將資料區塊與共用緩衝集區中的緩衝區建立關聯。

**注意**  
在 Aurora PostgreSQL 第 12 版及更低版本中，此事件顯示為 `LWLock:buffer_mapping`，在第 13 版及更新版本中，則顯示為 `LWLock:BufferMapping`。

**Topics**
+ [支援的引擎版本](#apg-waits.lwl-buffer-mapping.context.supported)
+ [Context](#apg-waits.lwl-buffer-mapping.context)
+ [原因](#apg-waits.lwl-buffer-mapping.causes)
+ [動作](#apg-waits.lwl-buffer-mapping.actions)

## 支援的引擎版本
<a name="apg-waits.lwl-buffer-mapping.context.supported"></a>

此等待事件資訊與 Aurora PostgreSQL 9.6 版及更新版本有關。

## Context
<a name="apg-waits.lwl-buffer-mapping.context"></a>

*共用緩衝集區*是一種 Aurora PostgreSQL 記憶體區域，其中保留程序正在使用或已使用的所有分頁。程序需要分頁時會將分頁讀入共用緩衝集區。`shared_buffers` 參數設定共用緩衝區大小，並保留記憶體區域來存放資料表和索引分頁。如果您變更此參數，請務必重新啟動資料庫。如需詳細資訊，請參閱[共用緩衝區](AuroraPostgreSQL.Tuning.concepts.md#AuroraPostgreSQL.Tuning.concepts.buffer-pool)。

下列情況會發生 `LWLock:buffer_mapping` 等待事件：
+ 程序在緩衝區資料表中搜尋分頁，並取得共用緩衝區映射鎖定。
+ 程序將分頁載入緩衝集區，並取得獨佔緩衝區映射鎖定。
+ 程序從集區移除頁面，並取得獨佔緩衝區映射鎖定。

## 原因
<a name="apg-waits.lwl-buffer-mapping.causes"></a>

此事件比平時更常出現時，可能表示有效能問題，資料庫正在共用緩衝集區中頁進頁出。典型原因包括：
+ 大型查詢
+ 膨脹的索引和資料表
+ 完整資料表掃描
+ 小於工作集的共用集區大小

## 動作
<a name="apg-waits.lwl-buffer-mapping.actions"></a>

根據等待事件的原因，我們會建議不同的動作。

**Topics**
+ [監控緩衝區相關指標](#apg-waits.lwl-buffer-mapping.actions.monitor-metrics)
+ [評估索引策略](#apg-waits.lwl-buffer-mapping.actions.indexes)
+ [減少必須快速配置的緩衝區數目](#apg-waits.lwl-buffer-mapping.actions.buffers)

### 監控緩衝區相關指標
<a name="apg-waits.lwl-buffer-mapping.actions.monitor-metrics"></a>

`LWLock:buffer_mapping` 等待激增時，請調查緩衝區命中率。您可以使用這些指標，以更加了解緩衝區快取中的情況。檢查下列指標：

`BufferCacheHitRatio`  
此 Amazon CloudWatch 指標測量資料庫叢集中資料庫執行個體的緩衝區快取所處 理的請求百分比。在 `LWLock:buffer_mapping` 等待事件發生之前，您可能看到此指標下降。

`blks_hit`  
此績效詳情計數器指標指出從共用緩衝集區擷取的區塊數目。在 `LWLock:buffer_mapping` 等待事件出現之後，您可能發現 `blks_hit` 激增。

`blks_read`  
此績效詳情計數器指標指出需要將輸入/輸出讀入共用緩衝集區的區塊數目。在 `LWLock:buffer_mapping` 等待事件發生之前，您可能發現 `blks_read` 激增。

### 評估索引策略
<a name="apg-waits.lwl-buffer-mapping.actions.indexes"></a>

若要確認索引策略不會降低效能，請檢查下列各項：

索引膨脹  
請確定索引和資料表膨脹不會導致將不必要的分頁讀入共用緩衝區。如果資料表包含未使用的資料列，請考慮封存資料並從資料表中移除資料列。然後，您可以對已調整大小的資料表重建索引。

常用查詢的索引  
若要判斷您是否有最佳索引，請在績效詳情中監控資料庫引擎指標。`tup_returned` 指標顯示讀取的資料列數。`tup_fetched` 指標顯示傳回給用戶端的資料列數。如果 `tup_returned` 明顯大於 `tup_fetched`，表示資料可能未正確編製索引。此外，資料表統計數字可能不是最新。

### 減少必須快速配置的緩衝區數目
<a name="apg-waits.lwl-buffer-mapping.actions.buffers"></a>

若要減少 `LWLock:buffer_mapping` 等待事件，請嘗試減少必須快速配置的緩衝區數目。有一種策略是執行較小的批次操作。您可以分割資料表來獲得較小的批次。