你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Cosmos DB for PostgreSQL 服务器参数
适用对象:PostgreSQL 的 Azure Cosmos DB (由 PostgreSQL 的 Citus 数据库扩展提供支持)
有各种服务器参数会影响 Azure Cosmos DB for PostgreSQL 的行为,无论是来自标准 PostgreSQL 还是特定于 Azure Cosmos DB for PostgreSQL。 可以在 Azure 门户中为群集设置这些参数。 在“设置”类别下,选择“工作器节点参数”或“协调器节点参数” 。 在这些页面中可为所有工作器节点设置参数,或者只是为协调器节点设置参数。
Azure Cosmos DB for PostgreSQL 参数
注意
运行旧版 Citus 扩展的群集可能不会提供下面列出的所有参数。
常规配置
citus.use_secondary_nodes (enum)
设置选择 SELECT 查询的节点时要使用的策略。 如果设置为“always”,则规划器将仅查询 pg_dist_node 中标记为“辅助”节点角色的节点。
此枚举支持的值为:
- never:(默认值)所有读取都在主要节点上发生。
- always:读取针对辅助节点运行,而插入/更新语句将会禁用。
citus.cluster_name (text)
告知协调器节点规划器它要协调哪个群集。 设置 cluster_name 后,规划器将仅查询该群集中的工作器节点。
citus.enable_version_checks (boolean)
升级 Azure Cosmos DB for PostgreSQL 版本需要重启服务器(以选取新的共享库),然后运行 ALTER EXTENSION UPDATE 命令。 执行这两个步骤失败可能会导致出错或崩溃。 Azure Cosmos DB for PostgreSQL 因而会验证代码版本和扩展版本是否匹配,如果不匹配,则会出错。
此值默认为 true,并在协调器上生效。 在罕见的情况下,复杂的升级过程可能要求将此参数设置为 false,从而禁用检查。
citus.log_distributed_deadlock_detection (boolean)
是否在服务器日志中记录分布式死锁检测相关的处理。 默认值为 false。
citus.distributed_deadlock_detection_factor (floating point)
设置在检查分布式死锁之前要等待的时间。 具体而言,等待时间是将此值与 PostgreSQL 的 deadlock_timeout 设置相乘后得到的结果。 默认值为 2
。 指定 -1
值会禁用分布式死锁检测。
citus.node_connection_timeout (integer)
citus.node_connection_timeout
GUC 设置等待建立连接的最大持续时间(以毫秒为单位)。 如果在至少建立一个工作器连接之前已超时,Azure Cosmos DB for PostgreSQL 将引发错误。 此 GUC 会影响从协调器到工作器的连接,以及工作器彼此之间的连接。
- 默认值:5 秒
- 最小值:10 毫秒
- 最大值:1 小时
-- 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(文本)
默认情况下,Azure Cosmos DB for PostgreSQL 在 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 (integer)
设置维护守护程序从 citus_stat_statements 中删除不匹配 pg_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 (enum)
记录 citus_stat_statements
的统计信息需要额外的 CPU 资源。
当数据库遇到负载时,管理员可以通过将 citus.stat_statements_track
设为 none
禁用语句跟踪。
- all:(默认)跟踪所有语句。
- none:禁用跟踪。
citus.stat_tenants_untracked_sample_rate
citus_stat_tenants
中新租户的采样率。 采样率可以是 0.0
和 1.0
之间的范围。 默认值为 1.0
,这意味着对 100% 的未跟踪租户查询进行采样。 将其设置为较低值意味着已跟踪的租户将进行 100% 查询采样,但当前未跟踪的租户只会按提供的比率进行采样。
数据加载
citus.multi_shard_commit_protocol (enum)
设置对哈希分布式表执行复制时要使用的提交协议。 在每个分片位置,复制将在事务块中执行,以确保在复制期间出错时不会引入任何数据。 但存在一种特殊的故障情况:复制在所有位置成功,但在提交所有事务之前发生(硬件)故障。 使用此参数可在以下提交协议之间进行选择,以防止在出现这种情况时丢失数据:
- 2pc:(默认)首先使用 PostgreSQL 的两阶段提交来准备在分片位置执行复制时所在的事务,然后提交这些事务。 可以使用 COMMIT PREPARED 或 ROLLBACK PREPARED 来分别手动恢复或中止失败的提交。 使用 2pc 时,应在所有工作器上增大 maxpreparedtransactions,通常应将设置为与 maxconnections 相同的值。
- 1pc:通过一个轮次提交在分片位置执行复制时所在的事务。 如果在所有位置复制成功后提交失败,则可能会丢失数据(这种情况很罕见)。
citus.shard_replication_factor (integer)
设置分片的复制因子,即放置分片的节点数,默认值为 1。 此参数可在运行时设置,并在协调器上生效。 此参数的理想值取决于群集大小和节点故障率。 例如,如果你运行大型群集并发现节点故障更频繁发生,可以增大此复制因子。
规划器配置
citus.local_table_join_policy (enum)
此 GUC 确定在本地表和分布式表之间执行联接时,Azure Cosmos DB for PostgreSQL 如何移动数据。 自定义联接策略有助于减少在工作器节点之间发送的数据量。
Azure Cosmos DB for PostgreSQL 将根据需要将本地表或分布式表发送到节点以支持联接。 复制表数据称为“转换”。 如果转换了本地表,则会将其发送给需要其数据执行联接的任何工作器。 如果转换了分布式表,则会在协调器中收集分布式表以支持联接。 Azure Cosmos DB for PostgreSQL 规划器仅发送执行转换所需的行。
有四种模式可用于表达转换偏好:
- auto:(默认)Azure Cosmos DB for PostgreSQL 将转换所有本地表或所有分布式表来支持本地和分布式表联接。 Azure Cosmos DB for PostgreSQL 使用启发式方法来决定要转换哪一个。 如果分布式表使用唯一索引上的常量筛选器(如主键)进行联接,则它将转换这些表。 转换可确保在工作器之间移动的数据更少。
- never:Azure Cosmos DB for PostgreSQL 不允许在本地表和分布式表之间进行联接。
- prefer-local:Azure Cosmos DB for PostgreSQL 首选转换本地表以支持本地和分布式表联接。
- prefer-distributed:Azure Cosmos DB for PostgreSQL 首选转换分布式表以支持本地和分布式表联接。 如果分布式表很大,使用此选项可能会导致在工作器之间移动大量数据。
例如,假设 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 (integer)
设置每个任务要提取的行数以进行 limit 子句优化。 在某些情况下,包含 limit 子句的 select 查询可能需要从每个任务中提取所有行来生成结果。 在这种情况下,以及当近似值会生成有意义的结果时,此配置值将设置要从每个分片中提取的行数。 默认会禁用 limit 近似值,此参数设置为 -1。 此值可在运行时设置,并在协调器上生效。
citus.count_distinct_error_rate (floating point)
Azure Cosmos DB for PostgreSQL 可以使用 postgresql-hll 扩展计算 count(distinct) 近似值。 在计算 count(distinct) 时,此配置条目将设置所需的错误率。 指定 0.0(默认值)会禁用 count(distinct) 的近似值;指定 1.0 不能保证结果的准确性。 建议将此参数设置为 0.005 以获得最佳结果。 此值可在运行时设置,并在协调器上生效。
citus.task_assignment_policy (enum)
注意
仅当 shard_replication_factor 大于 1 时,此 GUC 才适用;或者,此 GUC 仅适用于针对 reference_tables 运行的查询。
设置将任务分配给工作器时要使用的策略。 协调器基于分片位置将任务分配给工作器。 此配置值指定进行这些分配时要使用的策略。 目前可以使用三个可能的任务分配策略。
- 贪婪:贪婪策略是默认策略,旨在将任务均匀分配到工作器。
- 轮循机制:轮循机制策略以轮循方式将任务分配到工作器(在不同的副本之间交替分配)。 当表的分片计数小于工作器数量时,此策略可以提高群集利用率。
- 首个副本:首个副本策略基于分片的位置(副本)插入顺序分配任务。 换言之,对某个分片的片段查询将分配到包含该分片的第一个副本的工作器。 使用此方法,可以在有关要在哪些节点上使用哪些分片方面获得可靠的保证(即更可靠的内存驻留保证)。
此参数可在运行时设置,并在协调器上生效。
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
Azure Cosmos DB for PostgreSQL 强制实施交换性规则,并获取修改操作的相应锁以保证行为的正确性。 例如,假设一个 INSERT 语句可与另一个 INSERT 语句交换,但不可与某个 UPDATE 或 DELETE 语句交换。 同理,假设一个 UPDATE 或 DELETE 语句不可与另一个 UPDATE 或 DELETE 语句交换。 这种防备意味着 UPDATE 和 DELETE 要求 Azure Cosmos DB for PostgreSQL 获取更强的锁。
如果你的 UPDATE 语句可与 INSERT 或其他 UPDATE 语句交换,则你可以通过将此参数设置为 true 来放宽这些交换性假设。 当此参数设置为 true 时,所有命令将被视为可交换并声明一个共享锁,这可以提高总体吞吐量。 此参数可在运行时设置,并在协调器上生效。
citus.remote_task_check_interval (integer)
设置 Azure Cosmos DB for PostgreSQL 检查任务跟踪器执行程序所管理作业的状态的频率。 默认值为 10 毫秒。 协调器将任务分配给工作器,然后定期在工作器上检查每个任务的进度。 此配置值设置每两次后续检查的时间间隔。 此参数在协调器上生效,可在运行时设置。
citus.task_executor_type (enum)
Azure Cosmos DB for PostgreSQL 有三种执行程序类型,用于运行分布式 SELECT 查询。 可以通过设置此配置参数来选择所需的执行程序。 此参数的可接受值为:
- adaptive:默认值。 要快速响应涉及到跨多个分片进行聚合与并置联接的查询,这是最佳值。
- task-tracker:task-tracker 执行程序非常适合用于需要跨工作器节点随机排布数据的长时间运行的复杂查询,以及实现高效的资源管理。
- real-time:(已弃用)与 adaptive 执行程序的作用类似,但灵活性更低,可能会导致工作器节点上的连接压力增大。
此参数可在运行时设置,并在协调器上生效。
citus.multi_task_query_log_level (enum) {#multi_task_logging}
为生成多个任务(即,命中多个分片)的任何查询设置日志级别。 在迁移多租户应用程序期间,日志记录非常有用,因为你可以选择对此类查询显示错误或警告、查找这些查询并对其添加 tenant_id 筛选器。 此参数可在运行时设置,并在协调器上生效。 此参数的默认值为“off”。
此枚举支持的值为:
- off:禁用记录任何生成多个任务(即,命中多个分片)的查询
- debug:在“调试”严重性级别记录语句。
- log:在“日志”严重性级别记录语句。 日志行包括已运行的 SQL 查询。
- notice:在“通知”严重性级别记录语句。
- warning:在“警告”严重性级别记录语句。
- error:在“错误”严重性级别记录语句。
有利的用法可能是在开发测试期间使用 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 语句的行为。
在多语句事务块中创建对象时,Azure Cosmos DB for PostgreSQL 会切换顺序模式,以确保创建的对象对分片上的后续语句可见。 然而,切换到顺序模式并不总是可取的。 通过替代此行为,用户可以在创建新对象时权衡性能,实现完全事务一致性。
此参数的默认值为“immediate”。
支持的值包括:
- immediate:在尝试 CREATE TYPE 之前发生诸如 create_distributed_table 之类的并行操作的事务中引发错误。
- automatic:在通过分布式表上的并行操作共享事务时延迟创建类型。 在不同节点上存在的数据库对象之间可能存在一些不一致。
- deferred:恢复到 11.0 之前的行为,类似于 automatic,但存在其他微妙的极端情况。 建议使用 automatic 设置而不是 deferred,除非需要真正的向后兼容性。
有关此 GUC 的示例,请参阅类型传播。
citus.enable_repartition_joins (boolean)
一般情况下,尝试使用自适应执行程序执行重新分区联接将会失败并出现错误消息。 但是,将 citus.enable_repartition_joins
设置为 true 可使 Azure Cosmos DB for PostgreSQL 能够暂时切换到任务跟踪器执行程序来执行联接。 默认值为 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(整数)
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(整数)
每个后端将打开与工作器的连接以查询分片。 在事务结束时,配置的连接数保持打开状态,以加快后续命令的速度。 增加此值将会降低多分片查询的延迟,但会增加工作器的开销。
默认值为 1。 对于使用少量并发会话的集群,较大的值(例如 2)可能会有所帮助,但不应该更进一步增大(例如,16 会太高)。
citus.force_max_query_parallelization(布尔值)
模拟已弃用且现在不存在的实时执行程序。 此参数用于打开尽可能多的连接以最大化查询并行化。
启用此 GUC 后,Azure Cosmos DB for PostgreSQL 将强制自适应执行程序在执行并行分布式查询时使用尽可能多的连接。 如果未启用,执行程序可能会选择使用更少的连接来优化整体查询执行吞吐量。 在内部,将此设置为 true
最终将导致每个任务使用一个连接。
此参数在下面的情况下非常有用:事务的第一个查询是轻量级的,需要很少的连接,而后续查询将受益于更多的连接。 Azure Cosmos DB for PostgreSQL 根据第一条语句决定在事务中使用多少连接,除非我们使用 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 (integer)
此参数设置每完成一个任务管理轮次后任务跟踪器的睡眠时间,默认值为 200 毫秒。 任务跟踪器进程定期唤醒,逐个查看分配给它的所有任务,然后计划并执行这些任务。 然后,任务跟踪器将睡眠一段时间,唤醒后再次逐个查看这些任务。 此配置值确定睡眠时长。 此参数在工作器上生效,需要在 postgresql 文件中进行更改。 编辑配置文件后,用户可以发送 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 (integer)
设置用于分区操作的缓冲区大小,默认值为 8 MB。 Azure Cosmos DB for PostgreSQL 允许在联接两个大型表时将表数据重新分区到多个文件中。 填满此分区缓冲区后,已重新分区的数据将刷新到磁盘上的文件中。 此配置条目可在运行时设置,并在工作器上生效。
Explain 输出
citus.explain_all_tasks (boolean)
默认情况下,对分布式查询运行 EXPLAIN 时,Azure Cosmos DB for PostgreSQL 将显示单个任意任务的输出。 在大多数情况下,explain 输出在各个任务中都是类似的。 某些任务有时会以不同的方式进行规划,或者需要更长的执行时间。 在这种情况下,启用此参数会非常有用,因为 EXPLAIN 输出会在此后包括所有任务。 解释所有任务可能会导致 EXPLAIN 花费更长的时间。
citus.explain_analyze_sort_method(枚举)
确定 EXPLAIN ANALYZE 输出中任务的排序方法。 citus.explain_analyze_sort_method
的默认值为 execution-time
。
支持的值包括:
- execution-time:按执行时间排序。
- taskId:按任务 ID 排序。
托管 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 |
pgbouncer.query_wait_timeout | 允许查询等待进行执行的最长时间(秒)。 如果在此时间段内未将查询分配给服务器,客户端将断开连接。 | 20s |
pgbouncer.server_idle_timeout | 如果服务器连接空闲时间超过此秒数,则会关闭。 如果为 0,则禁用此超时。 | 60s |
PostgreSQL 参数
- DateStyle - 设置日期和时间值的显示格式
- IntervalStyle - 设置间隔值的显示格式
- TimeZone - 设置用于显示和解释时间戳的时区
- application_name - 设置要在统计信息和日志中报告的应用程序名称
- array_nulls - 在数组中启用 NULL 元素输入
- autovacuum - 启动 autovacuum 子进程
- autovacuum_analyze_scale_factor - 在将元组作为 reltuples 的分数进行分析之前所要达到的元组插入、更新或删除次数
- autovacuum_analyze_threshold - 在分析元组之前所要达到的元组插入、更新或删除最小次数
- autovacuum_naptime - 每两次 autovacuum 运行之间的睡眠时间
- autovacuum_vacuum_cost_delay - autovacuum 的清空成本延迟,以毫秒为单位
- autovacuum_vacuum_cost_limit - autovacuum 在短暂睡眠之前可用的清空成本量
- autovacuum_vacuum_scale_factor - 在将元组作为 reltuples 的分数清空之前所要达到的元组更新或删除次数
- autovacuum_vacuum_threshold - 在清空之前所要达到的元组更新或删除次数
- autovacuum_work_mem - 设置每个 autovacuum 工作进程要使用的最大内存
- 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 - 设置规划器对每个元组(行)的处理成本的估算值
- 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_deferrable - 设置新事务的默认只读状态
- 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 - 设置 FROM 项的阈值,超过该阈值时会使用 GEQO
- 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 - 设置最短执行时间,超过该时间后将记录 autovacuum 操作
- 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 - 设置每页的谓词锁定元组的最大数目
- max_pred_locks_per_relation - 设置每个关系的谓词锁定页和元组的最大数目
- 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 - 设置将每个元组(行)从工作器端传递给主后端的成本的规划器估算值
- 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 keepalive 重新传输的最大次数
- tcp_keepalives_idle - 发出 TCP keepalive 的间隔时间
- tcp_keepalives_interval - TCP keepalive 重新传输的间隔时间
- temp_buffers - 设置每个数据库会话使用的临时缓冲区的最大数目
- temp_tablespaces - 设置用于临时表和排序文件的表空间
- 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 扫描整个表以冻结元组之前所要达到的期限
- vacuum_multixact_freeze_min_age - 在 VACUUM 冻结表行中的 MultiXactId 之前所要达到的最短期限
- vacuum_multixact_freeze_table_age - 在 VACUUM 扫描整个表以冻结元组之前所要达到的 Multixact 期限
- wal_receiver_status_interval - 设置向主要节点报告 WAL 接收器状态的最大时间间隔
- wal_writer_delay - 在 WAL 写入器中执行 WAL 刷新的间隔时间
- wal_writer_flush_after - WAL 写入器写出的 WAL 数量,达到该数量将触发刷新
- work_mem - 设置写入到临时磁盘文件之前内部排序操作和哈希表要使用的内存量
- xmlbinary - 设置如何在 XML 中对二进制值进行编码
- xmloption - 设置是要将隐式分析和序列化操作中的 XML 数据视为文档还是内容片段