参数配置
在 PostgreSQL 的基础上,Redrock Postgres 修改或新增的服务器配置选项的概述。
这些设置用于控制数据库服务器的资源消耗。
-
threaded_execution
(boolean
)控制是否启用多线程 Postgres 模型。在 Redrock Postgres 中,多线程 Postgres 模型使 UNIX 和 Linux 上的 Postgres 进程能够作为操作系统线程在单独的地址空间中运行。
在 Windows 上,与会话相关的后端进程始终使用线程执行,其余的后台进程作为操作系统进程运行。因此,“Postgres 进程”并不总是等同于“操作系统进程”。
有几个 WAL 相关的配置参数会影响数据库性能。
-
data_checksums
(boolean
)控制是否在写数据块时计算校验和(根据块中存储的所有字节计算的数字),并在将数据块写入磁盘时将校验和存储在每个数据块的页头中。如果此参数为
on
,并且块的最后一次写入存储了校验和,那么在读取块时,校验和将被验证。此外,Postgres 还会在应用更新/删除语句中的更改之前验证校验和,并在应用更改后重新计算校验和。此外,Postgres 在将每个 WAL 记录写入磁盘之前都会为其提供校验和。如果此参数设置为
off
,则关闭数据校验和。校验和允许 Postgres 检测由底层磁盘、存储系统或 I/O 系统引起的损坏。启用数据校验和仅导致额外 1% 到 2% 的开销。如果启用,则为实例中所有数据库的所有对象计算校验和。所有校验和失败都将报告在pg_stat_database 视图。
这些参数控制服务器范围的统计数据收集特性。当统计收集被启用时,被产生的数据可以通过pg_stat
和pg_statio
系统视图族访问。详见统计收集器。
-
track_wait_events
(boolean
)启用有关每个会话中发生的等待事件的信息的收集,包括发生的等待次数和耗时信息。该参数默认开启。注意即使被启用,这些信息也不是对所有用户可见,只有超级用户和拥有报告信息的会话的用户可见,因此它不会表现为一个安全风险。只有超级用户可以更改这个设置。
这些设置控制自动分析特性的行为。详情请参考 第 24.1.6 节。注意很多这些设置可以被针对每个表的设置所覆盖,请见存储参数。
-
autoanalyze
(boolean
)控制服务器是否运行自动分析启动器后台进程。默认为开启, 不过要自动分析正常工作还需要启用 track_counts。 该参数只能在
postgresql.conf
文件或服务器命令行中设置, 不过,通过更改表存储参数可以为表禁用自动分析。 -
log_autoanalyze_min_duration
(integer
)如果自动分析运行至少该值所指定的时间量,被自动分析执行的每一个动作都会被日志记录。 将该参数设置为 0 会记录所有的自动分析动作。
-1
(默认值)将禁用对自动分析动作的记录。 如果指定值时没有单位,则以毫秒为单位。 例如,如果你将它设置为250ms
,则所有运行 250ms 或更长时间的自动分析将被记录。此外,当该参数被设置为除-1
外的任何值时, 如果一个自动分析动作由于一个锁冲突或者被并发删除的关系而被跳过,将会为此记录一个消息。 开启这个参数对于追踪自动分析活动非常有用。这个参数只能在postgresql.conf
文件或者服务器命令行中设置。但是可以通过更改表的存储参数为个别表覆盖这个设置。 -
autoanalyze_max_workers
(integer
)指定能同时运行的自动分析进程(除了自动分析启动器之外)的最大数量。默认值为 3。该参数只能在服务器启动时设置。
-
autoanalyze_naptime
(integer
)指定自动清理在任意给定数据库上运行的最小延迟。在每一轮中后台进程检查数据库并根据需要为数据库中的表发出
ANALYZE
命令。 如果指定值时没有单位,则以秒为单位。默认值为 1 分钟(1min
)。该参数只能在postgresql.conf
文件或在服务器命令行上设置。 -
autoanalyze_base_threshold
(integer
)指定能在一个表上触发
ANALYZE
的被插入、被更新或被删除元组的最小数量。默认值为 50 个元组。该参数只能在postgresql.conf
文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。 -
autoanalyze_scale_factor
(floating point
)指定一个表尺寸的分数,在决定是否触发
ANALYZE
时将它加到autoanalyze_base_threshold
上。默认值为 0.1(表尺寸的 10%)。该参数只能在postgresql.conf
文件或在服务器命令中设置。但是对个别表可以通过修改表存储参数来覆盖该设置。