適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的限制

適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

下列各節說明 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中的容量和功能限制。 如果您想要瞭解資源(計算、記憶體或記憶體)層,請參閱 計算和記憶體 一文。

連線數目上限

下表顯示 每個定價層和虛擬核心組態的默認 連線數目上限。 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會保留 15 個連線,以便實體復寫和監視 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例。 因此,數據表中所列用戶連線上限的值會從連線總數減少 15。

產品名稱 虛擬核心 記憶體大小 連線數目上限 最大用戶連線
可高載
B1ms 1 2 GiB 50 35
B2s 2 4 GiB 429 414
B2ms 2 8 GiB 859 844
B4ms 4 16 GiB 1,718 1,703
B8ms 8 32 GiB 3,437 3,422
B12ms 12 48 GiB 5,000 4,985
B16ms 16 64 GiB 5,000 4,985
B20ms 20 80 GiB 5,000 4,985
一般用途
D2s_v3 / D2ds_v4 / D2ds_v5 / D2ads_v5 2 8 GiB 859 844
D4s_v3 / D4ds_v4 / D4ds_v5 / D4ads_v5 4 16 GiB 1,718 1,703
D8s_v3/D8ds_V4/D8ds_v5/D8ads_v5 8 32 GiB 3,437 3,422
D16s_v3/D16ds_v4/D16ds_v5/D16ads_v5 16 64 GiB 5,000 4,985
D32s_v3/D32ds_v4/D32ds_v5/D32ads_v5 32 128 GiB 5,000 4,985
D48s_v3 / D48ds_v4 / D48ds_v5 / D48ads_v5 48 192 GiB 5,000 4,985
D64s_v3/D64ds_v4/D64ds_v5/D64ads_v5 64 256 GiB 5,000 4,985
D96ds_v5 / D96ads_v5 96 384 GiB 5,000 4,985
記憶體最佳化
E2s_v3/E2ds_v4/E2ds_v5/E2ads_v5 2 16 GiB 1,718 1,703
E4s_v3/E4ds_v4/E4ds_v5/E4ads_v5 4 32 GiB 3,437 3,422
E8s_v3/ E8ds_v4 / E8ds_v5 / E8ads_v5 8 64 GiB 5,000 4,985
E16s_v3/E16ds_v4/E16ds_v5/E16ads_v5 16 128 GiB 5,000 4,985
E20ds_v4/ E20ds_v5 / E20ads_v5 20 160 GiB 5,000 4,985
E32s_v3/E32ds_v4/E32ds_v5/E32ads_v5 32 256 GiB 5,000 4,985
E48s_v3 / E48ds_v4 / E48ds_v5 / E48ads_v5 48 384 GiB 5,000 4,985
E64s_v3/E64ds_v4/E64ds_v5/E64ads_v5 64 432 GiB 5,000 4,985
E96ds_v5/ E96ads_v5 96 672 GiB 5,000 4,985

目前為 15 的保留連線位置可能會變更。 我們建議定期確認伺服器上的保留連線總數。 您可以藉由加總和 伺服器 superuser_reserved_connections 參數的值reserved_connections來計算這個數位。 可用的用戶連線數目上限為 max_connections - ( + reserved_connectionssuperuser_reserved_connections)。

當您布建 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器的實例時,會根據您為伺服器計算選取的產品名稱,計算伺服器參數的預設值max_connections。 對於支援彈性伺服器之計算的任何後續產品選擇變更,對於該實例的伺服器參數預設值 max_connections 沒有任何影響。 我們建議您每當變更指派給 實例的產品時,也會根據上表的值來調整參數的值 max_connections

變更max_connections值

當您第一次設定適用於 Postgres 的 Azure 資料庫彈性伺服器實例時,它會自動決定可同時處理的連線數目上限。 此號碼是以伺服器的組態為基礎,且無法變更。

不過,您可以使用 max_connections 設定來調整特定時間允許的連線數目。 變更此設定之後,您必須重新啟動伺服器,才能開始運作的新限制。

警告

雖然可能會增加 超過預設設定的值 max_connections ,但我們建議不要使用。

當工作負載擴充並要求更多記憶體時,實例可能會遇到困難。 隨著連線數目增加,記憶體使用量也會增加。 記憶體有限實例可能會遇到當機或高延遲等問題。 雖然 在大部分連線處於閑置狀態時,可能可以接受較高的值 max_connections ,但在它們變成作用中之後,可能會導致顯著的效能問題。

如果您需要更多連線,建議您改用 PgBouncer,這是聯機集區管理的內建 Azure 解決方案。 在交易模式中使用。 若要開始,建議您使用保守的值,方法是將 2 到 5 範圍內的虛擬核心乘以。 之後,請仔細監視資源使用率和應用程式效能,以確保作業順暢。 如需 PgBouncer 的詳細資訊,請參閱 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的 PgBouncer。

當連線超過限制時,您可能會收到下列錯誤:

FATAL: sorry, too many clients already.

當您針對具有大量並行連線的忙碌資料庫使用 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器時,資源可能會造成重大壓力。 這種壓力可能會導致高 CPU 使用率,特別是在同時建立許多連線,以及連線持續時間短時(少於 60 秒)。 這些因素可能會藉由增加處理連線和中斷連線所花費的時間,對整體資料庫效能造成負面影響。

請注意,適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中的每個連線,不論它處於閑置或作用中狀態,都會從您的資料庫取用大量的資源。 此耗用量可能會導致效能問題超出高 CPU 使用率,例如磁碟和鎖定爭用。 PostgreSQL Wiki 上的資料庫 連線 數目一文會更詳細地討論本主題。 若要深入瞭解,請參閱識別並解決 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中的連線效能。

功能限制

下列各節列出 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器不支持的考慮事項。

調整作業

  • 此時,相應增加伺服器記憶體需要重新啟動伺服器。
  • 您只能以 2 倍增量調整伺服器記憶體。 如需詳細資訊,請參閱 計算和記憶體

儲存體

  • 設定記憶體大小之後,就無法加以縮減。 您必須建立具有所需記憶體大小的新伺服器、執行手動 傾印和還原 作業,以及將資料庫移轉至新的伺服器。
  • 當記憶體使用量達到 95% 或可用容量小於 5 GiB 時,伺服器會自動切換到 唯讀模式 ,以避免與磁碟完整情況相關聯的錯誤。 在極少數情況下,如果數據成長速度超過切換到唯讀模式所需的時間,您的伺服器可能仍會用盡記憶體。 您可以啟用記憶體自動成長,以避免這些問題,並根據工作負載需求自動調整記憶體。
  • 我們建議針對 storage usedstorage percent 設定警示規則超過特定閾值時,讓您可以主動採取動作,例如增加記憶體大小。 例如,如果記憶體百分比超過 80% 使用量,您可以設定警示。
  • 如果您使用邏輯復寫,如果對應的訂閱者已不存在,則必須卸除主伺服器中的邏輯復寫位置。 否則,預先寫入記錄 (WAL) 檔案會累積在主要複本中,並填滿記憶體。 如果記憶體超過特定閾值,而且邏輯復寫位置未使用(因為無法使用訂閱者),適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會自動卸除未使用的邏輯復寫位置。 該動作會釋放累積的 WAL 檔案,並防止您的伺服器因為記憶體已填滿而無法使用。
  • 我們不支援建立數據表空間。 如果您要建立資料庫,請勿提供數據表空間名稱。 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會使用繼承自範本資料庫的預設伺服器。 提供數據表空間就像暫存的數據表空間不安全,因為我們無法確保這類物件會在伺服器重新啟動和高可用性 (HA) 故障轉移等事件之後保持持續性。

網路

  • 目前不支援移入和移出虛擬網路。
  • 目前不支援將公用存取與虛擬網路中的部署結合在一起。
  • 虛擬網路不支援防火牆規則。 您可以改用網路安全組。
  • 公用存取資料庫伺服器可以連線到公用因特網;例如,透過 postgres_fdw。 您無法限制此存取。 虛擬網路中的伺服器可以透過網路安全組限制輸出存取。

高可用性

可用性區域

  • 目前不支援手動將伺服器移至不同的可用性區域。 不過,藉由使用慣用的可用性區域作為待命區域,您可以開啟HA。 建立待命區域之後,您可以故障轉移至該區域,然後關閉HA。

Postgres 引擎、擴充功能和 PgBouncer

停止/啟動作業

  • 停止 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例之後,它會在 7 天后自動啟動。

排程維護

  • 您可以將自訂維護時段變更為一周的任何一天/時間。 不過,在收到維護通知之後所做的任何變更都不會影響下一個維護。 變更只會在下列每月排程的維護中生效。

伺服器備份

  • 系統會管理備份。 目前無法手動執行備份。 我們建議改用 pg_dump

  • 第一個快照集是完整備份,而連續快照集則是差異備份。 差異備份只會備份上次快照集備份之後的已變更數據。

    例如,如果您的資料庫大小為 40 GB,且布建的記憶體為 64 GB,則第一個快照集備份會是 40 GB。 現在,如果您變更 4 GB 的數據,則下一個差異快照集備份大小只會是 4 GB。 事務歷史記錄(預先寫入記錄)與完整和差異備份不同,而且會持續封存。

伺服器還原

  • 當您使用時間點還原 (PITR) 功能時,新伺服器會以與其所依據伺服器相同的計算和記憶體組態來建立。
  • 當您從備份還原時,虛擬網路中的資料庫伺服器會還原到相同的虛擬網路。
  • 在還原期間建立的新伺服器沒有存在於原始伺服器上的防火牆規則。 您必須為新伺服器個別建立防火牆規則。
  • 不支援還原至不同的訂用帳戶。 因應措施是,您可以將相同訂用帳戶內的伺服器還原,然後將還原的伺服器移轉至不同的訂用帳戶。

下一步