管理 Amazon Aurora PostgreSQL - Amazon Aurora

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

管理 Amazon Aurora PostgreSQL

下列幾節說明如何管理 Amazon Aurora PostgreSQL 資料庫叢集的效能和擴展功能。也包括其他維護任務的相關資訊。

擴展 Aurora PostgreSQL 資料庫執行個體

有兩種方式可以擴展 Aurora PostgreSQL 資料庫執行個體:執行個體擴展和讀取擴展。如需讀取擴展的詳細資訊,請參閱讀取擴展

您可以修改資料庫叢集中每個資料庫執行個體的資料庫執行個體類別,來擴展 Aurora PostgreSQL 資料庫叢集。Aurora PostgreSQL 支援數個針對 Aurora 最佳化的資料庫執行個體類別。針對大小超過 40 TB 的較大 Aurora 叢集,請勿使用 db.t2 或 db.t3 執行個體類別。

注意

建議您在開發、測試伺服器或其他非生產伺服器時,僅使用 T 資料庫執行個體類別。如需詳細了解 T 執行個體類別,請參閱 資料庫執行個體類別的類型

擴展並非即時進行。可能需要 15 分鐘或更長時間,才能完成對其他資料庫執行個體類別做的變更。若您使用此方法修改資料庫執行個體類別,請在下一個排程維護時段 (而非立即) 套用變更,以避免影響使用者。

作為修改資料庫執行個體類別的直接替代方法,您可以使用 Amazon Aurora 的高可用性功能來盡力減少停機時間。首先,請將 Aurora 複本新增至您的叢集。在建立複本時,請選擇要用於叢集的資料庫執行個體類別規模。在 Aurora 複本與叢集同步時,您便可以容錯移轉為新增的複本。如需了解詳細資訊,請參閱 Aurora 複本Amazon Aurora PostgreSQL 的快速容錯移轉

如需 Aurora PostgreSQL 支援資料庫執行個體類別的詳細規格,請參閱資料庫執行個體類別的支援資料庫引擎

對 Aurora PostgreSQL 資料庫執行個體的連線數上限

Aurora PostgreSQL 資料庫叢集會根據資料庫執行個體類別及其可用記憶體分配資來源。與資料庫叢集的每個連線都會遞增地佔用這些資源,例如記憶體和 CPU 資源。每個連線佔用的記憶體會因查詢類型、計數及是否使用臨時資料表而有所不同。即使是閒置連線也會佔用記憶體和 CPU。這是因為當查詢在連線上執行時,會為每個查詢分配更多的記憶體,且即使停止處理,也不會將其完全釋放。因此,我們建議您確保您的應用程式不會在閒置連線上等待:每一個閒置連線都會浪費資源並對效能產生負面影響。如需詳細資訊,請參閱 Resources consumed by idle PostgreSQL connections (閒置 PostgreSQL 連線所佔用的資源)。

允許對 Aurora PostgreSQL 資料庫執行個體建立的連線數上限,由資料庫執行個體的執行個體參數群組中指定的 max_connections 參數決定。該max_connections參數的理想設置是支持應用程序所需的所有客戶端連接,沒有過多的未使用連接,再加上至少 3 個以支持 AWS 自動化的連接。在修改 max_connections 參數設定之前,建議您考慮下列內容:

  • 如果 max_connections 值太低,用戶端嘗試連線時 Aurora PostgreSQL 資料庫執行個體可能會沒有足夠的可用連線。若發生這種情況,則嘗試使用 psql 連線將引發下列錯誤訊息:

    psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
  • 如果 max_connections 值超過實際需要的連線數,未使用的連線可能會導致效能降低。

max_connections 的預設值是從下列 Aurora PostgreSQL LEAST 函數所衍生的:

LEAST({DBInstanceClassMemory/9531392},5000).

若您想變更 max_connections 值,您需要建立自訂資料庫叢集參數群組並在其中變更其值。將自訂資料庫參數群組套用至叢集後,請務必重新啟動主執行個體,新的值才會生效。如需詳細資訊,請參閱 Amazon Aurora PostgreSQL 參數建立資料庫叢集參數群組

提示

如果您的應用程式經常開啟和關閉連線,或者保持大量長期連線開啟,我們建議您使用 Amazon RDS Proxy。RDS 代理是個完全受管、高可用性的資料庫代理,其使用連線集區,安全且高效地共用資料庫連線。如要進一步了解 RDS 代理,請參閱 使用 Amazon RDS Proxy for Aurora

如需 Aurora Serverless v2 執行個體處理此參數的詳細資訊,請參閱 Aurora Serverless v2 的連線數上限

Aurora PostgreSQL 的暫存空間限制

Aurora PostgreSQL 會將資料表和索引儲存在 Aurora 儲存子系統。Aurora PostgreSQL 對非持久性暫存檔案會使用個別的暫存空間。這包括用於查詢處理期間排序大型資料集或用於索引建置作業等目的的檔案。如需詳細資訊,請參閱如何在 Aurora PostgreSQL 相容的執行個體中針對本機儲存體問題進行疑難排解?一文。

這些本機儲存磁碟區由 Amazon Elastic Block Store 支援,且可透過使用更大的資料庫執行個體類別來擴充。如需儲存體的詳細資訊,請參閱Amazon Aurora 儲存體與可靠性。您也可以使用啟用 NVMe 的執行個體類型和 Aurora 最佳化已啟用讀取功能的暫存物件來增加暫存物件的本機儲存空間。如需詳細資訊,請參閱 使用 Aurora Optimized Reads 改善 Aurora PostgreSQL 的查詢效能

注意

當擴充資料庫執行個體時,例如從 db.r5.2xlarge 擴充到 db.r5.4xlarge,您可能會看見 storage-optimization 事件。

下表顯示每個 Aurora PostgreSQL 資料庫執行個體類別可用的暫存空間容量上限。如需 Aurora 之資料庫執行個體類別支援的詳細資訊,請參閱 Aurora 資料庫執行個體類別

DB instance class (資料庫執行個體類別) 可用的暫存空間上限 (GiB)
db.x2g.16xlarge1829
db.x2g.12xlarge1606
db.x2g.8xlarge1071
db.x2g.4xlarge535
db.x2g.2xlarge268
db.x2g.xlarge134
db.x2g.large67
db.r7g.16xlarge 1008
db.r7g.12xlarge 756
db.r7g.8xlarge 504
db.r7g.4xlarge 252
db.r7g.2xlarge 126
db.r7g.xlarge 63
db.r7g.large 32
db.r6g.16xlarge 1008
db.r6g.12xlarge 756
db.r6g.8xlarge 504
db.r6g.4xlarge 252
db.r6g.2xlarge 126
db.r6g.xlarge 63
db.r6g.large 32
db.r6i.32xlarge 1829
db.r6i.24xlarge 1500
db.r6i.16xlarge 1008
db.r6i.12xlarge 748
db.r6i.8xlarge 504
db.r6i.4xlarge 249
db.r6i.2xlarge 124
db.r6i.xlarge 62
db.r6i.large 31
db.r5.24xlarge 1500
db.r5.16xlarge 1008
db.r5.12xlarge 748
db.r5.8xlarge 504
db.r5.4xlarge 249
db.r5.2xlarge 124
db.r5.xlarge 62
db.r5.large 31
db.r4.16xlarge 960
db.r4.8xlarge 480
db.r4.4xlarge 240
db.r4.2xlarge 120
db.r4.xlarge 60
db.r4.large 30
db.t4g.large 16.5
db.t4g.medium 8.13
db.t3.large 16
db.t3.medium 7.5
注意

啟用 NVMe 的執行個體類型最多可以增加 NVMe 總大小的可用空間。如需詳細資訊,請參閱 使用 Aurora Optimized Reads 改善 Aurora PostgreSQL 的查詢效能

您可以使用中Amazon 極光的亞馬遜 CloudWatch 指標所述的FreeLocalStorage CloudWatch 指標--> 監視資料庫執行個體的可用暫存體。(這不適用於 Aurora Serverless v2。)

對於某些工作負載,您可以針對執行該操作的處理程序配置更多記憶體,以減少暫存空間容量。若要增加可用於操作的記憶體,請增加 work_memmaintenance_work_mem PostgreSQL 參數的值。

Aurora PostgreSQL 的巨型分頁

巨型分頁是一項記憶體管理功能,可減少資料庫執行個體處理大型連續記憶體區塊 (如共用緩衝區使用的記憶體區塊) 時的額外負荷。所有目前可用的 Aurora PostgreSQL 版本都支援此 PostgreSQL 功能。

對於 t3.medium,db.t3.large、db.t4g.medium、db.t4g.large 類別以外的所有資料庫執行個體類別,預設為開啟 Huge_pages 參數。您無法在 Aurora PostgreSQL 的受支援執行個體類別中變更 huge_pages 參數值或關閉此功能。