適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器中的限制
適用範圍: 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
下列各節說明適用於 PostgreSQL 的 Azure 資料庫彈性伺服器中的容量和功能限制。 如果您想要了解資源 (計算、記憶體、儲存體) 層,請參閱 計算 和 儲存體 文章。
連線數目上限
下表顯示每個定價層和 V 核心設定 預設 連線數目上限。 適用於 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,可能會變更。 我們建議定期確認伺服器上的保留連線總數。 您可以藉由加總 reserved_connections
和 superuser_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 倍的增量調整,如需詳細資訊,請參閱 儲存體。
- 目前不支援減少伺服器儲存體大小。 唯一的作法是傾印和還原至新的適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體。
儲存體
- 設定儲存大小之後,就無法加以縮減。 您必須建立具有所需儲存大小的新伺服器、手動執行傾印和還原作業,並將資料庫移轉至新的伺服器。
- 當儲存體使用量達到 95% 或可用容量小於 5 GiB 時 (取其多者),伺服器會自動切換至唯讀模式,以避免與磁碟完整情況相關聯的錯誤。 在極少數情況下,如果資料成長速度超過切換到唯讀模式所需的時間,您的伺服器可能仍會用盡儲存體。 您可以啟用儲存體自動成長,以避免這些問題,並根據工作負載需求自動調整儲存體。
- 建議您針對
storage used
或storage percent
設定超過特定閾值的警示規則,以便主動採取動作,例如增加儲存大小。 例如,您可以設定儲存體百分比超過 80% 使用量的警示。 - 如果您使用的是邏輯複寫,且對應的訂閱者已不存在,您必須卸載主要伺服器中的邏輯複寫位置。 否則,預先寫入記錄 (WAL) 檔案會累積在主要伺服器中,並填滿儲存體。 如果儲存體超過特定閾值,而且邏輯複寫位置不在使用中 (因為訂閱者無法使用),則適用於 PostgreSQL 的 Azure 資料庫彈性伺服器會自動卸載未使用的邏輯複寫位置。 該動作會釋放累積的 WAL 檔案,且避免伺服器因為儲存體填滿的情況而變得無法使用。
- 我們不支援建立資料表空間。 如果您要建立資料庫,請勿提供資料表空間名稱。 適用於 PostgreSQL 的 Azure 資料庫彈性伺服器會使用繼承自範本資料庫的預設資料庫。 提供資料表空間就像暫存的資料表空間不安全,因為我們無法確保這類物件會在伺服器重新啟動和高可用性 (HA) 容錯轉移等事件之後保持持續性。
網路
- 目前不支援移入和移出虛擬網路。
- 目前不支援將公用存取與虛擬網路中的部署結合在一起。
- 虛擬網路不支援防火牆規則。 您可以改用網路安全性群組。
- 公用存取資料庫伺服器可以連線到公用網際網路,例如透過
postgres_fdw
。 您無法限制此存取。 虛擬網路中的伺服器可以透過網路安全性群組限制輸出存取。
高可用性
可用性區域
- 目前不支援手動將伺服器移至不同的可用性區域。 不過,藉由使用慣用的可用性區域作為待命區域,您可以開啟高可用性。 建立待命區域之後,您可以容錯轉移至該區域,然後關閉高可用性。
Postgres 引擎、延伸模組和 PgBouncer
- 不支援 Postgres 10 和較舊版本,因為開放原始碼社群已淘汰它們。 如果您必須使用其中一個版本,則必須使用 [適用於 PostgreSQL 的 Azure 資料庫單一伺服器] 選項,其支援較舊的主要版本 9.5、9.6 和 10。
- 適用於 PostgreSQL 的 Azure 資料庫彈性伺服器支援所有
contrib
延伸模組等等。 如需詳細資訊,請參閱 PostgreSQL 擴充功能。 - 內建的 PgBouncer 連線共用工具目前不適用於可高載伺服器。
停止/啟動作業
- 停止適用於 PostgreSQL 的 Azure 資料庫彈性伺服器執行個體之後,它會在 7 天後自動啟動。
排程維護
- 您可以將自訂維護視窗變更為一週的任何一天/時間。 不過,在收到維護通知之後所做的任何變更都不會影響下一個維護。 變更只會在下列每個月的排程維護中生效。
伺服器備份
系統會管理備份。 目前無法手動執行備份。 我們建議您改用
pg_dump
。第一個快照集是完整備份,而連續快照集是差異備份。 差異備份只會備份上次快照集備份之後的已變更資料。
例如,如果您的資料庫大小為 40 GB,且佈建的儲存體為 64 GB,則第一個快照集備份會是 40 GB。 現在,如果您變更 4 GB 的資料,則下一個差異快照集備份大小只會是 4 GB。 交易記錄 (預先寫入記錄) 會與完整/差異備份分開,並且會持續封存。
伺服器還原
- 當您使用時間點還原 (PITR) 功能時,新伺服器會以與其所依據的伺服器相同的計算和儲存體設定來建立。
- 當您從備份還原時,虛擬網路中的資料庫伺服器會還原到相同的虛擬網路。
- 在還原期間建立的新伺服器不會有原始伺服器中的防火牆規則。 您必須為新的伺服器個別建立防火牆規則。
- 不支援還原至不同的訂用帳戶。 因應措施是,您可以將相同訂用帳戶內的伺服器還原,然後將還原的伺服器移轉至不同的訂用帳戶。
安全性
- MD5 雜湊在 Postgres 14 和更新版本中停用,原生 Postgres 密碼只會使用 SCRAM-SHA-256 方法來雜湊。