共用方式為


Azure Cosmos DB for PostgreSQL 伺服器參數

適用於: Azure Cosmos DB for PostgreSQL (由 PostgreSQL 的超大規模 (Citus) 資料庫延伸模組提供)

有各種伺服器參數會影響適用於 PostgreSQL 的 Azure Cosmos DB 行為,無論是從標準 PostgreSQL,還是適用於 PostgreSQL 的 Azure Cosmos DB。 您可以在 Azure 入口網站中為叢集設定這些參數。 在 [設定] 類別下,選擇 [背景工作角色節點參數] 或 [協調器節點參數]。 這些頁面可讓您設定所有背景工作角色節點的參數,或只設定協調器節點的參數。

Azure Cosmos DB for PostgreSQL 參數

注意

執行舊版 Citus 擴充功能的叢集可能無法提供下列所有參數。

一般設定

citus.use_secondary_nodes (列舉)

設定在選擇 SELECT 查詢節點時要使用的原則。 如果設定為 「一律」,則規劃工具只會查詢pg_dist_node標示為「次要」節點的節點。

此列舉的支援值為:

  • never:(預設值) 所有讀取皆發生在主要節點上。
  • always:讀取改為針對次要節點執行,並停用插入/更新陳述式。

citus.cluster_name (文字)

通知協調器節點規劃工具其座標的叢集。 設定cluster_name之後,規劃工具會單獨查詢該叢集中的背景工作節點。

citus.enable_version_checks (布林值 )

升級適用於 PostgreSQL 的 Azure Cosmos DB 版本需要重新啟動伺服器(以挑選新的共用連結庫),後面接著 ALTER EXTENSION UPDATE 命令。 執行這兩個步驟失敗可能會導致錯誤或當機。 因此,適用於 PostgreSQL 的 Azure Cosmos DB 會驗證程式代碼的版本和擴充功能相符的版本,如果不符合,就會發生錯誤。

這個值預設為 true,而且對協調器有效。 在罕見的情況下,複雜的升級程式可能需要將此參數設定為 false,因此停用檢查。

citus.log_distributed_deadlock_detection (布爾值)

是否要在伺服器記錄檔中記錄分散式死結偵測相關處理。 默認為 false。

citus.distributed_deadlock_detection_factor (浮點)

設定檢查分散式死結之前要等候的時間。 特別是等候時間是此值乘以PostgreSQL的 deadlock_timeout 設定。 預設值是 2。 的值 -1 會停用分散式死結偵測。

citus.node_connection_timeout (整數)

GUC 會 citus.node_connection_timeout 設定等候連線建立的最大持續時間(以毫秒為單位)。 如果逾時在建立至少一個背景工作角色連線之前經過,Azure Cosmos DB for PostgreSQL 就會引發錯誤。 此 GUC 會影響協調器與背景工作角色的連線,以及彼此之間背景工作角色的連線。

  • 預設值:五秒
  • 最小值:10 毫秒
  • 最大值:一小時
-- set to 30 seconds
ALTER DATABASE foo
SET citus.node_connection_timeout = 30000;

citus.log_remote_commands (布爾值)

記錄協調器傳送給背景工作節點的所有命令。 例如:

-- reveal the per-shard queries behind the scenes
SET citus.log_remote_commands TO on;

-- run a query on distributed table "github_users"
SELECT count(*) FROM github_users;

輸出會顯示數個在背景工作角色上執行的查詢,因為協調器上的單一 count(*) 查詢。

NOTICE:  issuing SELECT count(*) AS count FROM public.github_events_102040 github_events WHERE true
DETAIL:  on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
NOTICE:  issuing SELECT count(*) AS count FROM public.github_events_102041 github_events WHERE true
DETAIL:  on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
NOTICE:  issuing SELECT count(*) AS count FROM public.github_events_102042 github_events WHERE true
DETAIL:  on server citus@private-c.demo.postgres.database.azure.com:5432 connectionId: 1
... etc, one for each of the 32 shards

citus.show_shards_for_app_name_prefixes (文字)

根據預設,適用於 PostgreSQL 的 Azure Cosmos DB 會從 PostgreSQL 提供給 SQL 用戶端的數據表清單中隱藏分區。 這樣做是因為每個分散式數據表有多個分區,而分區可能會分散SQL用戶端的注意力。

citus.show_shards_for_app_name_prefixes GUC 允許針對想要查看這些分區的選取客戶端顯示分區。 其預設值為 ''。

-- show shards to psql only (hide in other clients, like pgAdmin)

SET citus.show_shards_for_app_name_prefixes TO 'psql';

-- also accepts a comma separated list

SET citus.show_shards_for_app_name_prefixes TO 'psql,pg_dump';

使用citus.override_table_visibility可以完全停用分區隱藏。

citus.override_table_visibility (布林值 )

判斷citus.show_shards_for_app_name_prefixes是否為使用中狀態。 預設值為 『true』。 當設定為 『false』 時,所有用戶端應用程式都會看到分區。

citus.use_citus_managed_tables (布林值 )

允許背景工作節點上的查詢存取新的 本機數據表 。 啟用時,將所有新建立的數據表新增至 Citus 元數據。 默認值為 『false』。

citus.rebalancer_by_disk_size_base_cost (整數)

使用by_disk_size重新平衡策略,每個分區群組都會以位元組為單位來取得新增至其實際磁碟大小的成本。 當部分分區中幾乎沒有數據時,這個值可用來避免建立不正確的平衡。 假設即使是空的分區也有一些成本,因為平行處理原則和因為空分區群組可能會在未來成長。

預設值是 100MB

查詢統計資料

citus.stat_statements_purge_interval (整數)

設定維護精靈從 pg_stat_statements不相符citus_stat_statements移除記錄的頻率。 此組態值會設定以秒為單位清除之間的時間間隔,預設值為10。 值為 0 會停用清除。

SET citus.stat_statements_purge_interval TO 5;

此參數在協調器上有效,而且可以在運行時間變更。

citus.stat_statements_max (整數)

要儲存在 citus_stat_statements 的最大資料列數。 默認值為 50000,而且可以變更為 1000 - 10000000 範圍中的任何值。 每個數據列都需要 140 個字節的記憶體,因此設定 stat_statements_max 為 10M 的最大值會耗用 1.4 GB 的記憶體。

在 PostgreSQL 重新啟動之前,變更此 GUC 不會生效。

citus.stat_statements_track (列舉)

記錄 的 citus_stat_statements 統計數據需要額外的CPU資源。 當資料庫發生載入時,系統管理員可以藉由將 設定 citus.stat_statements_tracknone來停用語句追蹤。

  • all: (預設值) 追蹤所有語句。
  • none: 停用追蹤。

citus.stat_tenants_untracked_sample_rate

citus_stat_tenants新租用戶的取樣率。 速率可以是 介於和1.0之間的0.0範圍。 預設值表示 1.0 會取樣 100% 的未追蹤租用戶查詢。 將它設定為較低的值表示已追蹤的租使用者已取樣 100% 查詢,但目前未追蹤的租使用者只會以提供的速率取樣。

數據載入

citus.multi_shard_commit_protocol (列舉)

設定在哈希分散式數據表上執行 COPY 時要使用的認可通訊協定。 在每個個別分區放置上,COPY 會在交易區塊中執行,以確保在 COPY 期間發生錯誤時不會內嵌任何數據。 不過,在某些情況下,COPY 會在所有位置上成功,但在所有交易認可之前發生(硬體)失敗。 此參數可用來防止在該案例中遺失數據,方法是選擇下列認可通訊協定:

  • 2pc: (預設) COPY 在分區放置上執行的交易會先使用 PostgreSQL 的 兩階段認可 進行準備,然後再認可。 失敗的認可可以分別使用 COMMIT PREPARED 或 ROLLBACK PREPARED 手動復原或中止。 使用 2pc 時, 應該在所有背景工作角色上增加max_prepared_transactions ,通常是與max_connections相同的值。
  • 1pc: 在單一回合中認可在分區放置上執行 COPY 的交易。 如果複製在所有放置成功之後認可失敗,數據可能會遺失(罕見)。

citus.shard_replication_factor (整數)

設定分區的復寫因數,也就是放置分區的節點數目,預設為1。 這個參數可以在運行時間設定,而且在協調器上有效。 此參數的理想值取決於叢集的大小和節點失敗率。 例如,如果您執行大型叢集並觀察節點失敗的頻率,您可以增加此複寫因數。

Planner 設定

citus.local_table_join_policy (列舉)

此 GUC 會決定在本機和分散式數據表之間聯結時,適用於 PostgreSQL 的 Azure Cosmos DB 如何行動數據。 自定義聯結原則有助於減少背景工作節點之間傳送的數據量。

適用於 PostgreSQL 的 Azure Cosmos DB 會視需要將本機或分散式數據表傳送至節點,以支援聯結。 複製數據表數據稱為「轉換」。 如果本機數據表已轉換,則會傳送給需要其數據以執行聯結的任何背景工作角色。 如果分散式數據表已轉換,則會在協調器中收集它以支援聯結。 適用於 PostgreSQL 的 Azure Cosmos DB 規劃工具只會傳送執行轉換的必要數據列。

有四種模式可用來表示轉換喜好設定:

  • auto: (預設) 適用於 PostgreSQL 的 Azure Cosmos DB 會轉換所有本機或所有分散式數據表,以支援本機和分散式數據表聯結。 適用於 PostgreSQL 的 Azure Cosmos DB 決定要使用啟發學習法進行轉換。 如果分散式數據表是使用唯一索引的常數篩選來聯結,則會轉換分散式數據表(例如主鍵)。 轉換可確保在背景工作角色之間移動的數據較少。
  • 永不: 適用於 PostgreSQL 的 Azure Cosmos DB 不允許本機和分散式數據表之間的聯結。
  • prefer-local: 適用於 PostgreSQL 的 Azure Cosmos DB 偏好轉換本機數據表以支援本機和分散式數據表聯結。
  • prefer-distributed: 適用於 PostgreSQL 的 Azure Cosmos DB 偏好轉換分散式數據表以支援本機和分散式數據表聯結。 如果分散式數據表非常龐大,使用此選項可能會導致背景工作角色之間移動大量數據。

例如,假設 citus_table 是數據行 x所散發的分散式數據表,而該 postgres_table 數據表是本機數據表:

CREATE TABLE citus_table(x int primary key, y int);
SELECT create_distributed_table('citus_table', 'x');

CREATE TABLE postgres_table(x int, y int);

-- even though the join is on primary key, there isn't a constant filter
-- hence postgres_table will be sent to worker nodes to support the join
SELECT * FROM citus_table JOIN postgres_table USING (x);

-- there is a constant filter on a primary key, hence the filtered row
-- from the distributed table will be pulled to coordinator to support the join
SELECT * FROM citus_table JOIN postgres_table USING (x) WHERE citus_table.x = 10;

SET citus.local_table_join_policy to 'prefer-distributed';
-- since we prefer distributed tables, citus_table will be pulled to coordinator
-- to support the join. Note that citus_table can be huge.
SELECT * FROM citus_table JOIN postgres_table USING (x);

SET citus.local_table_join_policy to 'prefer-local';
-- even though there is a constant filter on primary key for citus_table
-- postgres_table will be sent to necessary workers because we are using 'prefer-local'.
SELECT * FROM citus_table JOIN postgres_table USING (x) WHERE citus_table.x = 10;

citus.limit_clause_row_fetch_count (整數)

設定要針對 limit 子句優化擷取每個工作的數據列數目。 在某些情況下,選取具有 limit 子句的查詢可能需要從每個工作擷取所有數據列以產生結果。 在這些情況下,以及近似值會產生有意義的結果,此組態值會設定要從每個分區擷取的數據列數目。 默認會停用限制近似值,且此參數設定為 -1。 此值可以在運行時間設定,而且在協調器上有效。

citus.count_distinct_error_rate (浮點)

適用於 PostgreSQL 的 Azure Cosmos DB 可以使用 postgresql-hll 擴充功能來計算 count(distinct) 近似值。 此組態專案會在計算 count(distinct) 時設定所需的錯誤率。 0.0,這是預設值,會停用 count(distinct] 的近似值:和 1.0 不提供結果精確度的保證。 建議您將此參數設定為 0.005,以獲得最佳結果。 此值可以在運行時間設定,而且在協調器上有效。

citus.task_assignment_policy (列舉)

注意

只有當shard_replication_factor大於一個,或針對reference_tables進行查詢時,才適用此 GUC。

設定將工作指派給背景工作時要使用的原則。 協調器會根據分區位置將工作指派給背景工作。 此組態值會指定要在進行這些指派時使用的原則。 目前,有三個可能的工作指派原則可供使用。

  • 貪婪: 貪婪政策是預設值,旨在平均分配工作給工人。
  • 迴圈配置資源: 迴圈配置資源原則會以迴圈配置資源的方式將工作指派給背景工作,以不同復本之間交替。 相較於背景工作角色數目,當數據表的分區計數較低時,此原則可提供更好的叢集使用率。
  • first-replica: 第一個複本原則會根據分區放置(複本)的插入順序來指派工作。 換句話說,分區的片段查詢會指派給具有該分區第一個複本的背景工作角色。 這個方法可讓您對哪些節點使用哪些分區提供強式保證(也就是更強的記憶體落地保證)。

這個參數可以在運行時間設定,而且在協調器上有效。

citus.enable_non_colocated_router_query_pushdown (布林值)

針對參考非共置分散式數據表的查詢啟用路由器規劃工具。

路由器規劃工具只會針對參考共置分散式數據表的查詢啟用,否則分區可能不在相同的節點上。 啟用此旗標可針對參考這類數據表的查詢進行優化,但在重新平衡分區或改變這些數據表的分區計數之後,查詢可能無法運作。

預設值為 off

中繼數據傳輸

citus.max_intermediate_result_size (integer)

無法向下推送至背景工作節點以進行執行,以及複雜子查詢之 CTE 的中繼結果 KB 大小上限。 默認值為 1 GB,且值為 -1 表示沒有限制。 超過限制的查詢會取消併產生錯誤訊息。

DDL

citus.enable_schema_based_sharding

將 參數設定為 ON,所有建立的架構預設都會散發。 分散式結構描述會自動與個別共置群組相關聯,因此,以這些結構描述所建立的資料表會轉換成沒有分區索引鍵的共置分散式資料表。 您可以針對個別工作階段修改此設定。

如需使用此 GUC 的範例,請參閱 如何設計微服務

執行程式組態

一般

citus.all_modifications_commutative

適用於 PostgreSQL 的 Azure Cosmos DB 會強制執行通勤性規則,並取得適當的鎖定來修改作業,以確保行為正確性。 例如,它假設 INSERT 語句會與其他 INSERT 語句一起通勤,但不會使用 UPDATE 或 DELETE 語句。 同樣地,它假設 UPDATE 或 DELETE 語句不會與另一個 UPDATE 或 DELETE 語句通勤。 此預防措施表示 UPDATEEs 和 DELETE 需要適用於 PostgreSQL 的 Azure Cosmos DB 取得更強的鎖定。

如果您有使用 INSERT 或其他 UPDATEE 的 UPDATE 語句,您可以將此參數設定為 true 來放寬這些通勤性假設。 當此參數設定為 true 時,所有命令都會被視為通勤,並宣告共用鎖定,這可以改善整體輸送量。 這個參數可以在運行時間設定,而且在協調器上有效。

citus.remote_task_check_interval (整數)

設定 Azure Cosmos DB for PostgreSQL 檢查工作追蹤器執行程式所管理作業狀態的頻率。 預設為10毫秒。 協調器會將工作指派給背景工作,然後定期檢查每個工作的進度。 此組態值會設定兩次後續檢查之間的時間間隔。 此參數在協調器上有效,而且可以在運行時間設定。

citus.task_executor_type (列舉)

適用於 PostgreSQL 的 Azure Cosmos DB 有三種執行程式類型,可用於執行分散式 SELECT 查詢。 您可以藉由設定此組態參數來選取所需的執行程式。 此參數的接受值為:

  • adaptive: 預設值。 它最適合快速回應涉及跨多個分區的匯總和共置聯結的查詢。
  • task-tracker: 工作追蹤器執行程式非常適合長時間執行的複雜查詢,這些查詢需要跨背景工作節點洗牌數據,以及有效率的資源管理。
  • 即時: (已淘汰)提供與調適型執行程序類似的用途,但較不具彈性,而且可能會對背景工作節點造成更多的連線壓力。

這個參數可以在運行時間設定,而且在協調器上有效。

citus.multi_task_query_log_level (enum) {#multi_task_logging}

設定任何產生多個工作的查詢的記錄層級(也就是叫用多個分區)。 記錄在多租使用者應用程式移轉期間很有用,因為您可以選擇針對這類查詢發生錯誤或警告,以尋找它們,並將tenant_id篩選新增至它們。 這個參數可以在運行時間設定,而且在協調器上有效。 此參數的預設值為 『off』。

此列舉的支援值為:

  • 關閉: 關閉記錄任何產生多個工作的查詢(也就是跨越多個分區)
  • debug: 偵錯嚴重性層級的記錄語句。
  • log: LOG 嚴重性層級的Logs語句。 記錄行包含執行的 SQL 查詢。
  • 注意: 在 NOTICE 嚴重性層級的 Logs 語句。
  • warning: 在 WARNING 嚴重性層級記錄語句。
  • error: ERROR 嚴重性層級的Logs語句。

在開發測試期間使用 error ,以及較低的記錄層級,例如 log 在實際生產部署期間,使用可能會很有用。 log選擇會導致多任務查詢出現在資料庫記錄中,而查詢本身會顯示在 「STATEMENT」 之後。

LOG:  multi-task query about to be executed
HINT:  Queries are split to multiple tasks if they have to be split into several queries on the workers.
STATEMENT:  select * from foo;
citus.propagate_set_commands (列舉)

決定哪些 SET 命令會從協調器傳播到背景工作角色。 此參數的預設值為 『none』。

支援的 值為:

  • none: 不會傳播任何 SET 命令。
  • local: 只會傳播 SET LOCAL 命令。
citus.create_object_propagation (列舉)

控制所支持物件的交易中 CREATE 語句的行為。

在多語句交易區塊中建立物件時,適用於 PostgreSQL 的 Azure Cosmos DB 會循序模式切換,以確保在稍後的分區語句中可以看到已建立的物件。 不過,切換至循序模式不一定是可取的。 藉由覆寫此行為,用戶可以在建立新物件時取捨效能,以取得完整的交易一致性。

此參數的預設值為 『immediate』。

支援的 值為:

  • immediate: 在嘗試 CREATE TYPE 之前發生類似create_distributed_table等平行作業的交易中引發錯誤。
  • automatic: 在分散式數據表上與平行作業共用交易時,延遲建立類型。 在不同節點上存在哪些資料庫對象之間可能會有一些不一致的情況。
  • 延遲: 返回 11.0 之前的行為,就像是自動的,但與其他微妙的邊角案例一樣。 除非您需要真正的回溯相容性,否則建議您將自動設定延遲。

如需此 GUC 作用中的範例,請參閱 類型傳播

citus.enable_repartition_joins (布林值 )

一般而言,嘗試與調適型執行程序執行重新分割聯結失敗,並出現錯誤訊息。 不過設定 citus.enable_repartition_joins 為 true 可讓適用於 PostgreSQL 的 Azure Cosmos DB 暫時切換到工作追蹤器執行程式來執行連結。 預設值為 false。

citus.enable_repartitioned_insert_select (布林值 )

根據預設,INSERT INTO ... 無法向下推送的SELECT語句嘗試從SELECT語句重新分割數據列,並在背景工作角色之間傳輸數據列以進行插入。 不過,如果目標數據表有太多分區,則重新分割可能無法正常執行。 判斷如何分割結果時,處理分區間隔的額外負荷太大。 您可以將 設定 citus.enable_repartitioned_insert_select 為 false,手動停用重新分割。

citus.enable_binary_protocol (布林值 )

將此參數設定為 true 會指示協調器節點使用 PostgreSQL 的二進位串行化格式(如果適用的話)來與背景工作角色傳輸數據。 某些數據行類型不支援二進位串行化。

當背景工作角色必須傳回大量數據時,啟用此參數最有用。 例如,當要求許多數據列、數據列有許多數據行,或是使用類似 postgresql-hll 擴充功能的寬型別 hll 時。

預設值是 true。 當設定為 false時,所有結果都會以文字格式編碼和傳輸。

citus.max_adaptive_executor_pool_size (integer)

Max_adaptive_executor_pool_size限制目前會話的背景工作連線。 此 GUC 適用於:

  • 防止單一後端取得所有背景工作資源
  • 提供優先順序管理:指定低max_adaptive_executor_pool_size的低優先順序會話,以及具有較高值的高優先順序會話

預設值為 16。

citus.executor_slow_start_interval (整數)

開啟與相同背景工作節點連線之間的毫秒等候時間。

當多分區查詢的個別工作需要一些時間時,它們通常可以透過單一(通常已快取的)連線來完成。 為了避免重複開啟更多連線,執行程式會在連線嘗試之間等候設定的毫秒數。 在間隔結束時,它會增加下次允許開啟的連接數目。

對於長時間的查詢(需要 >500 毫秒的時間),緩慢的開始可能會增加延遲,但對於短查詢而言,速度會比較快。 預設值為 10 毫秒。

citus.max_cached_conns_per_worker (integer)

每個後端都會開啟與背景工作角色的連線,以查詢分區。 在交易結束時,設定的連線數目會保持開啟,以加速後續的命令。 增加此值可減少多分區查詢的延遲,但也會增加背景工作角色的額外負荷。

預設值是 1秒。 較大的值,例如 2,對於使用少量並行會話的叢集而言可能很有説明,但進一步執行並不明智(例如,16 會太高)。

citus.force_max_query_parallelization (布林值 )

模擬已被取代且目前不存在的實時執行程式。 此參數可用來儘可能開啟多個連線,以最大化查詢平行處理。

啟用此 GUC 時,適用於 PostgreSQL 的 Azure Cosmos DB 會強制調適型執行程式在執行平行分散式查詢時盡可能使用盡可能多的連線。 如果未啟用,執行程式可能會選擇使用較少的連線來優化整體查詢執行輸送量。 在內部,將此設定為 true 最終會使用每個工作的一個連線。

此參數很有用的其中一個位置是交易,其第一個查詢是羽量型且需要少數連線,而後續查詢會受益於更多連線。 適用於 PostgreSQL 的 Azure Cosmos DB 會根據第一個語句決定要在交易中使用的連線數目,除非我們使用 GUC 提供提示,否則可能會節流其他查詢。

BEGIN;
-- add this hint
SET citus.force_max_query_parallelization TO ON;

-- a lightweight query that doesn't require many connections
SELECT count(*) FROM table WHERE filter = x;

-- a query that benefits from more connections, and can obtain
-- them since we forced max parallelization above
SELECT ... very .. complex .. SQL;
COMMIT;

預設值為 false。

工作追蹤器執行程序設定

citus.task_tracker_delay (整數)

此參數會將工作管理回合與預設值之間的工作追蹤器睡眠時間設定為 200 毫秒。 工作追蹤器程式會定期喚醒、逐一查看指派給它的所有工作,以及排程和執行這些工作。 然後,工作追蹤器會睡眠一段時間,然後再再次執行這些工作。 此組態值會決定該睡眠期間的長度。 此參數對背景工作角色有效,而且必須在 postgresql.conf 檔案中變更。 編輯組態檔之後,使用者可以傳送 SIGHUP 訊號或重新啟動伺服器,讓變更生效。

您可以藉由減少管理回合之間的時間差距,來減少因工作追蹤器執行程式所造成的延遲而減少此參數。 當分區查詢很短時,減少延遲會很有用,因此會定期更新其狀態。

citus.max_assign_task_batch_size (integer)

協調器上的工作追蹤器執行程式會以批次方式將工作分批指派給背景工作背景工作。 此參數會設定單一批次中要指派的工作數目上限。 選擇較大的批次大小可加快工作分派。 不過,如果背景工作數目很大,則所有背景工作可能需要較長的時間才能取得工作。 這個參數可以在運行時間設定,而且在協調器上有效。

citus.max_running_tasks_per_node (integer)

工作追蹤器會排程並視需要執行指派給它的工作。 此組態值會設定在任何指定時間於一個節點上同時執行的工作數目上限,且預設為8。

此限制可確保您同時沒有許多工作達到磁碟,並有助於避免磁碟 I/O 爭用。 如果您的查詢是從記憶體或 SSD 提供,您可以增加max_running_tasks_per_node而不需太多考慮。

citus.partition_buffer_size (整數)

將分割區作業使用的緩衝區大小設定為8 MB。 當聯結兩個大型數據表時,適用於 PostgreSQL 的 Azure Cosmos DB 可讓數據表數據重新分割成多個檔案。 在此分割區緩衝區填滿之後,重新分割的數據會排清到磁碟上的檔案中。 此組態專案可以在運行時間設定,而且對背景工作角色有效。

說明輸出

citus.explain_all_tasks (布林值 )

根據預設,適用於 PostgreSQL 的 Azure Cosmos DB 會在分散式查詢上執行 EXPLAIN 時顯示單一任意工作的輸出。 在大部分情況下,說明輸出在工作之間很類似。 有時候,有些工作會以不同的方式進行規劃,或執行時間更高。 在這些情況下,啟用此參數會很有用,之後 EXPLAIN 輸出會包含所有工作。 說明所有工作可能會導致 EXPLAIN 需要較長的時間。

citus.explain_analyze_sort_method (列舉)

決定 EXPLAIN ANALYZE 輸出中工作的排序方法。 citus.explain_analyze_sort_method 的預設值為 execution-time

支援的 值為:

  • 運行時間: 依運行時間排序。
  • taskId: 依工作標識符排序。

Managed PgBouncer 參數

您可以在單一節點或協調器上設定下列 受控 PgBouncer 參數。

參數名稱 描述 預設
pgbouncer.default_pool_size 將此參數值設定為每位使用者/資料庫配對的連線數目。 295
pgbouncer.ignore_startup_parameters PgBouncer 可以忽略的參數逗號分隔清單。 例如,您可以讓 PgBouncer 忽略 extra_float_digits 參數。 允許某些參數,其他所有參數都會引發錯誤。 需要此能力,才能容許在啟動封包中無條件地設定 『extra_float_digits=2』 的過度輸入 JDBC。 如果您使用報告錯誤的連結庫,請使用此選項, 例如 pq: unsupported startup parameter: extra_float_digits extra_float_digits,ssl_renegotiation_limit
pgBouncer.max_client_conn 將此參數值設定為您想要支援的 PgBouncer 用戶端連線數目上限。 2000
pgBouncer.min_pool_size 如果低於此數字,請新增更多伺服器連線至集區。 0 (已停用)
pgBouncer.pool_mode 將此參數值設定為 TRANSACTION 以進行交易共用 (這是大部分工作負載的建議設定)。 TRANSACTION
pgbouncer.query_wait_timeout 允許查詢等候執行的時間上限 (以秒為單位)。 如果查詢在此期間未指派給伺服器,用戶端就會中斷連線。 20 秒
pgbouncer.server_idle_timeout 如果伺服器連線已閑置超過此數秒,則會關閉。 如果為 0,則會停用此逾時。 60 秒

PostgreSQL 參數

  • DateStyle - 設定日期和時間值的顯示格式
  • IntervalStyle - 設定間隔值的顯示格式
  • TimeZone - 設定用來顯示和解譯時間戳的時區
  • application_name - 將應用程式名稱設定為在統計數據和記錄中報告
  • array_nulls - 啟用陣列中 NULL 元素的輸入
  • autovacuum - 啟動自動數據清理子進程
  • autovacuum_analyze_scale_factor - 在分析為重新篩選分數之前,Tuple 插入、更新或刪除的數目
  • autovacuum_analyze_threshold - 分析前的 Tuple 插入、更新或刪除數目下限
  • autovacuum_naptime - 自動數據清理執行之間的睡眠時間
  • autovacuum_vacuum_cost_delay - 自動數據清理的真空成本延遲以毫秒為單位
  • autovacuum_vacuum_cost_limit - 自動清理之前可用的真空成本金額
  • autovacuum_vacuum_scale_factor - 數據清理前的 Tuple 更新或刪除數目,以重新篩選的一小部分
  • autovacuum_vacuum_threshold - 在真空之前最小數目的 Tuple 更新或刪除
  • autovacuum_work_mem - 設定每個自動數據清理背景工作進程要使用的記憶體上限
  • backend_flush_after - 先前執行寫入的頁數會排清到磁碟
  • backslash_quote - 設定字串常值中是否允許 “'”
  • bgwriter_delay - 背景寫入器在四捨五入之間的睡眠時間
  • bgwriter_flush_after - 先前執行寫入的頁數會排清到磁碟
  • bgwriter_lru_maxpages - 每個回合要排清的背景寫入器最大 LRU 頁面數目
  • bgwriter_lru_multiplier - 每個回合可用之平均緩衝區使用量的倍數
  • bytea_output - 設定 bytea 的輸出格式
  • check_function_bodies - 在 CREATE FUNCTION 期間檢查函式主體
  • checkpoint_completion_target - 在檢查點期間排清臟緩衝區所花費的時間,作為檢查點間隔的分數
  • checkpoint_timeout - 設定自動 WAL 檢查點之間的最大時間
  • checkpoint_warning - 如果檢查點區段比這個更頻繁地填入,啟用警告
  • client_encoding - 設定用戶端的字元集編碼
  • client_min_messages - 設定傳送至用戶端的訊息層級
  • commit_delay - 設定交易認可與將 WAL 排清至磁碟之間的毫秒延遲
  • commit_siblings - 在執行commit_delay 之前設定最小並行開啟交易
  • constraint_exclusion - 讓規劃工具能夠使用條件約束來優化查詢
  • cpu_index_tuple_cost - 設定規劃工具估計在索引掃描期間處理每個索引專案的成本
  • cpu_operator_cost - 設定規劃工具處理每個運算子或函數調用的成本估計
  • cpu_tuple_cost - 設定規劃工具對每個 Tuple 處理成本的估計值(資料列)
  • cursor_tuple_fraction - 設定規劃工具所擷取數據指標數據列分數的估計值
  • deadlock_timeout - 設定在檢查死結之前等待鎖定的時間量,以毫秒為單位
  • debug_pretty_print - 縮排剖析和計劃樹狀結構顯示
  • debug_print_parse - 記錄每個查詢的剖析樹狀結構
  • debug_print_plan - 記錄每個查詢的執行計劃
  • debug_print_rewritten - 記錄每個查詢的重寫剖析樹狀結構
  • default_statistics_target - 設定預設統計數據目標
  • default_tablespace - 設定預設的數據表空間,以在 中建立數據表和索引
  • default_text_search_config - 設定預設文字搜尋組態
  • default_transaction_deferrable - 設定新交易的預設可延遲狀態
  • default_transaction_isolation - 設定每個新交易的交易隔離等級
  • default_transaction_read_only - 設定新交易的預設唯讀狀態
  • default_with_oids - 預設會建立具有 OID 的新資料表
  • effective_cache_size - 設定規劃工具關於磁碟快取大小的假設
  • enable_bitmapscan - 啟用規劃工具使用位圖掃描計劃
  • enable_gathermerge - 讓規劃人員能夠使用收集合併計劃
  • enable_hashagg - 啟用規劃工具使用哈希匯總計劃
  • enable_hashjoin - 啟用規劃工具使用哈希聯結計劃
  • enable_indexonlyscan - 啟用規劃工具使用僅限索引掃描計劃
  • enable_indexscan - 啟用規劃工具使用索引掃描計劃
  • enable_material - 讓規劃者能夠使用具體化
  • enable_mergejoin - 讓規劃人員能夠使用合併聯結計劃
  • enable_nestloop - 啟用規劃工具使用巢狀循環聯結計劃
  • enable_seqscan - 啟用規劃工具使用循序掃描計劃
  • enable_sort - 啟用規劃工具使用明確的排序步驟
  • enable_tidscan - 啟用規劃工具使用 TID 掃描計劃
  • escape_string_warning - 警告一般字串常值中的反斜杠逸出
  • exit_on_error - 終止任何錯誤的工作階段
  • extra_float_digits - 設定浮點值顯示的位數
  • force_parallel_mode - 強制使用平行查詢設施
  • from_collapse_limit - 設定FROM清單大小,而子查詢不會折疊
  • geqo - 啟用基因查詢優化
  • geqo_effort - GEQO:用來設定其他 GEQO 參數的預設值
  • geqo_generations - GEQO:演算法的反覆項目數目
  • geqo_pool_size - GEQO:母體中的個人數目
  • geqo_seed - GEQO:隨機路徑選取的種子
  • geqo_selection_bias - GEQO:人口內部的選擇性壓力
  • geqo_threshold - 設定使用 GEQO 之 FROM 專案的閾值
  • gin_fuzzy_search_limit - 設定 GIN 精確搜尋允許的結果上限
  • gin_pending_list_limit - 設定 GIN 索引暫止清單的大小上限
  • idle_in_transaction_session_timeout - 設定任何閒轉交易允許的最大持續時間
  • join_collapse_limit - 設定FROM清單大小,而JOIN建構不會扁平化
  • lc_monetary - 設定格式化貨幣金額的地區設定
  • lc_numeric - 設定格式化數字的地區設定
  • lo_compat_privileges - 針對大型物件啟用許可權檢查的回溯相容性模式
  • lock_timeout - 設定任何等候鎖定的最大允許持續時間(以毫秒為單位)。 0 關閉此功能
  • log_autovacuum_min_duration - 設定記錄自動資料清理動作的最小運行時間
  • log_connections - 記錄每個成功的連線
  • log_destination - 設定伺服器記錄輸出的目的地
  • log_disconnections - 工作階段結束的記錄,包括持續時間
  • log_duration - 記錄每個已完成 SQL 語句的持續時間
  • log_error_verbosity - 設定已記錄訊息的詳細資訊
  • log_lock_waits - 記錄長時間鎖定等候
  • log_min_duration_statement - 設定記錄語句的最小運行時間(以毫秒為單位)。 -1 會停用記錄語句持續時間
  • log_min_error_statement - 導致在此層級以上產生錯誤的所有語句記錄
  • log_min_messages - 設定記錄的訊息層級
  • log_replication_commands - 記錄每個復寫命令
  • log_statement - 設定記錄的語句類型
  • log_statement_stats - 針對每個查詢,將累積效能統計數據寫入伺服器記錄檔
  • log_temp_files - 記錄使用大於此 KB 數目的暫存盤
  • maintenance_work_mem - 設定用於維護作業的最大記憶體
  • max_parallel_workers - 設定可以一次作用中的平行背景工作角色數目上限
  • max_parallel_workers_per_gather - 設定每個執行程序節點的平行進程數目上限
  • max_pred_locks_per_page - 設定每個頁面的述詞鎖定 Tuple 數目上限
  • max_pred_locks_per_relation - 設定每個關聯性之述詞鎖定頁面和 Tuple 的最大數目
  • max_standby_archive_delay - 當熱待命伺服器正在處理封存 WAL 數據時取消查詢之前,設定最大延遲時間
  • max_standby_streaming_delay - 設定當熱待命伺服器處理串流 WAL 數據時取消查詢之前的延遲上限
  • max_sync_workers_per_subscription - 每個訂用帳戶的數據表同步處理背景工作角色數目上限
  • max_wal_size - 設定觸發檢查點的 WAL 大小
  • min_parallel_index_scan_size - 設定平行掃描的索引數據量下限
  • min_wal_size - 將 WAL 壓縮的最小大小設定為
  • operator_precedence_warning - 針對自 PostgreSQL 9.4 起變更意義的建構發出警告
  • parallel_setup_cost - 設定規劃工具針對平行查詢啟動背景工作程式的成本估計
  • parallel_tuple_cost - 設定規劃工具將每個 Tuple (row) 從背景工作傳遞至主要後端的成本估計
  • pg_stat_statements.save - 跨伺服器關機儲存pg_stat_statements統計數據
  • pg_stat_statements.track - 選取pg_stat_statements所追蹤的語句
  • pg_stat_statements.track_utility - 選取公用程式 命令是否由 pg_stat_statements
  • quote_all_identifiers - 產生 SQL 片段時,引用所有識別碼
  • random_page_cost - 設定規劃工具對非佇列擷取磁碟頁面成本的估計
  • row_security - 啟用資料列安全性
  • search_path - 設定非架構限定名稱的架構搜尋順序
  • seq_page_cost - 設定規劃工具對循序擷取磁碟頁面成本的估計
  • session_replication_role - 設定觸發程式和重寫規則的會話行為
  • standard_conforming_strings - 導致 '...'要以字面方式處理反斜杠的字串
  • statement_timeout - 設定任何語句允許的最大持續時間(以毫秒為單位)。 0 關閉此功能
  • synchronize_seqscans - 啟用同步的循序掃描
  • synchronous_commit - 設定目前交易的同步處理層級
  • tcp_keepalives_count - TCP 保留重新傳輸的最大數目
  • tcp_keepalives_idle - 發出 TCP keepalives 之間的時間
  • tcp_keepalives_interval - TCP 保留重新傳輸之間的時間
  • temp_buffers - 設定每個資料庫會話所使用的暫存緩衝區數目上限
  • temp_tablespaces - 設定要用於臨時表和排序檔案的 tablespace(s)
  • track_activities - 收集執行命令的相關信息
  • track_counts - 收集資料庫活動的統計數據
  • track_functions - 收集資料庫活動的函式層級統計數據
  • track_io_timing - 收集資料庫 I/O 活動的計時統計數據
  • transform_null_equals - 將 “expr=NULL” 視為 “expr IS NULL”
  • vacuum_cost_delay - 真空成本延遲以毫秒為單位
  • vacuum_cost_limit - 在打盹之前可用的真空成本金額
  • vacuum_cost_page_dirty - 真空所抹去頁面的真空成本
  • vacuum_cost_page_hit - 緩衝區快取中找到頁面的真空成本
  • vacuum_cost_page_miss - 緩衝區快取中找不到頁面的真空成本
  • vacuum_defer_cleanup_age - 如果有任何交易,則應該延遲 VACUUM 和 HOT 清除的交易數目
  • vacuum_freeze_min_age - VACUUM 應凍結數據表數據列的最小年齡
  • vacuum_freeze_table_age - VACUUM 應該掃描整個數據表來凍結 Tuple 的年齡
  • vacuum_multixact_freeze_min_age - VACUUM 應該凍結數據表數據列中 MultiXactId 的最低存留期
  • vacuum_multixact_freeze_table_age - VACUUM 應該掃描整個數據表來凍結 Tuple 的多任務時間
  • wal_receiver_status_interval - 將 WAL 接收者狀態報告之間的最大間隔設定為主要
  • wal_writer_delay - WAL 寫入器中執行 WAL 排清之間的時間
  • wal_writer_flush_after - WAL 寫入器寫出的 WAL 數量,觸發排清
  • work_mem - 設定內部排序作業和哈希表在寫入暫存磁碟檔案之前要使用的記憶體數量
  • xmlbinary - 設定二進位值在 XML 中編碼的方式
  • xmloption - 設定是否將隱含剖析和串行化作業中的 XML 資料視為檔或內容片段

下一步

  • 除了伺服器參數之外,另一種組態形式是叢集中的資源 組態選項
  • 基礎 PostgreSQL 數據基底也有 組態參數