

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

# Amazon RDS 和 Amazon Aurora 中 PostgreSQL 資料庫的維護活動，以避免效能問題
<a name="introduction"></a>

*Anuradha Chintha、Rajesh Madiwale 和 Srinivas Potlachervoo，Amazon Web Services (AWS)*

*2025 年 8 月* ([文件歷史記錄](doc-history.md))

適用於 PostgreSQL 的 Amazon Aurora PostgreSQL 相容版本和 Amazon Relational Database Service (Amazon RDS) 是適用於 PostgreSQL 資料庫的全受管關聯式資料庫服務。 PostgreSQL 這些受管服務可讓資料庫管理員免於執行許多維護和管理任務。不過，某些維護任務，例如 `VACUUM`，需要根據您的資料庫用量進行密切監控和設定。本指南說明 Amazon RDS 和 Aurora 中的 PostgreSQL 維護活動。

## 目標業務成果
<a name="targeted-business-outcomes"></a>

資料庫效能是企業成功的基礎。在 Aurora PostgreSQL 相容資料庫和 Amazon RDS for PostgreSQL 資料庫上執行維護活動可提供下列優點：
+ 有助於達到最佳查詢效能
+ 釋放膨脹空間以供未來交易重複使用
+ 防止交易包裝 
+ 協助最佳化工具產生良好的計劃
+ 確保適當的索引用量

## 多版本並行控制 (MVCC)
<a name="mvcc"></a>

PostgreSQL 資料庫維護需要了解*多版本並行控制 (MVCC)*，這是 PostgreSQL 的機制。在資料庫中同時處理多個交易時，MVCC 可確保維持原子性和隔離，這是原子性、一致性、隔離、耐久性 (ACID) 交易的兩個特性。在 MVCC 中，每個寫入操作都會產生新的資料版本，並存放先前的版本。讀取器和寫入器不會彼此封鎖。當交易讀取資料時，系統會選擇其中一個版本來提供交易隔離。PostgreSQL 和一些關聯式資料庫使用稱為*快照隔離 (SI)* 的 MVCC 調整。例如，Oracle 使用復原區段來實作 SI。在寫入操作期間，Oracle 會將舊版本的資料寫入復原區段，並使用新版本覆寫資料區域。PostgreSQL 資料庫使用*可見性檢查規則*來評估版本，以實作 SI。將新資料放入資料表頁面時，PostgreSQL 會使用這些規則來選取適合讀取操作的資料版本。

當您修改資料表列中的資料時，PostgreSQL 會使用 MVCC 來維護該列的多個版本。在資料表上的 `UPDATE`和 `DELETE`操作期間，資料庫會保留其他執行中交易的舊版資料列，而這些交易可能需要一致的資料檢視。這些舊版本稱為*無效資料列 *(*元組*)。一組無效元組會產生膨脹。資料庫中大量膨脹可能會導致許多問題，包括查詢計畫產生不佳、查詢效能緩慢，以及存放較舊版本的磁碟空間使用量增加。

移除膨脹並保持資料庫正常運作需要定期維護，其中包括以下各節討論的這些活動：
+ [自動清空和分析資料表](autovacuum.md)
+ [手動清空和分析資料表](manual-vacuum.md)
+ [使用 pg\_repack 移除膨脹](pg-repack.md)
+ [重建索引](reindex.md)