適用於 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_connections
superuser_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 used
或storage percent
設定警示規則超過特定閾值時,讓您可以主動採取動作,例如增加記憶體大小。 例如,如果記憶體百分比超過 80% 使用量,您可以設定警示。 - 如果您使用邏輯復寫,如果對應的訂閱者已不存在,則必須卸除主伺服器中的邏輯復寫位置。 否則,預先寫入記錄 (WAL) 檔案會累積在主要複本中,並填滿記憶體。 如果記憶體超過特定閾值,而且邏輯復寫位置未使用(因為無法使用訂閱者),適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會自動卸除未使用的邏輯復寫位置。 該動作會釋放累積的 WAL 檔案,並防止您的伺服器因為記憶體已填滿而無法使用。
- 我們不支援建立數據表空間。 如果您要建立資料庫,請勿提供數據表空間名稱。 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器會使用繼承自範本資料庫的預設伺服器。 提供數據表空間就像暫存的數據表空間不安全,因為我們無法確保這類物件會在伺服器重新啟動和高可用性 (HA) 故障轉移等事件之後保持持續性。
網路
- 目前不支援移入和移出虛擬網路。
- 目前不支援將公用存取與虛擬網路中的部署結合在一起。
- 虛擬網路不支援防火牆規則。 您可以改用網路安全組。
- 公用存取資料庫伺服器可以連線到公用因特網;例如,透過
postgres_fdw
。 您無法限制此存取。 虛擬網路中的伺服器可以透過網路安全組限制輸出存取。
高可用性
- 請參閱 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的高可用性(可靠性)。
可用性區域
- 目前不支援手動將伺服器移至不同的可用性區域。 不過,藉由使用慣用的可用性區域作為待命區域,您可以開啟HA。 建立待命區域之後,您可以故障轉移至該區域,然後關閉HA。
Postgres 引擎、擴充功能和 PgBouncer
- 不支援Postgres 10和較舊版本,因為開放原始碼社群已淘汰它們。 如果您必須使用其中一個版本,則必須使用支援舊版 9.5、9.6 和 10 的 適用於 PostgreSQL 的 Azure 資料庫 單一伺服器選項。
- 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器支援所有
contrib
擴充功能等等。 如需詳細資訊,請參閱 PostgreSQL 擴充功能。 - 內建的 PgBouncer 連線共用器目前不適用於高載伺服器。
停止/啟動作業
- 停止 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器實例之後,它會在 7 天后自動啟動。
排程維護
- 您可以將自訂維護時段變更為一周的任何一天/時間。 不過,在收到維護通知之後所做的任何變更都不會影響下一個維護。 變更只會在下列每月排程的維護中生效。
伺服器備份
系統會管理備份。 目前無法手動執行備份。 我們建議改用
pg_dump
。第一個快照集是完整備份,而連續快照集則是差異備份。 差異備份只會備份上次快照集備份之後的已變更數據。
例如,如果您的資料庫大小為 40 GB,且布建的記憶體為 64 GB,則第一個快照集備份會是 40 GB。 現在,如果您變更 4 GB 的數據,則下一個差異快照集備份大小只會是 4 GB。 事務歷史記錄(預先寫入記錄)與完整和差異備份不同,而且會持續封存。
伺服器還原
- 當您使用時間點還原 (PITR) 功能時,新伺服器會以與其所依據伺服器相同的計算和記憶體組態來建立。
- 當您從備份還原時,虛擬網路中的資料庫伺服器會還原到相同的虛擬網路。
- 在還原期間建立的新伺服器沒有存在於原始伺服器上的防火牆規則。 您必須為新伺服器個別建立防火牆規則。
- 不支援還原至不同的訂用帳戶。 因應措施是,您可以將相同訂用帳戶內的伺服器還原,然後將還原的伺服器移轉至不同的訂用帳戶。
下一步
- 瞭解 可用於計算和記憶體選項的內容。
- 了解 支援的 PostgreSQL 資料庫版本。
- 檢閱如何使用 Azure 入口網站,在 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器中備份和還原伺服器。