重要参数详解
PolarDB PostgreSQL版(兼容Oracle)参数默认值的设置,综合了性能、可用性以及可靠性方面的考虑,与社区版本默认值不一定相同。特别是以下参数,PolarDB根据最优性能原则进行了默认设定,您可以根据自己的需求在控制台自行修改。
参数 | 说明 |
polar_comp_stmt_level_tx
| 该参数用于控制异常是否回滚未提交的数据库更新。取值如下: 默认值: Oracle语法兼容 2.0:ON。 Oracle语法兼容 1.0:OFF。
说明 当前参数在Oracle语法兼容 2.0中已修改为polar_enable_stmt_transaction_rollback。 在Oracle中,当SQL命令中出现运行时错误时,将回滚该单个命令所引起的数据库上的所有更新。这称为语句级别事务隔离。例如,如果单个UPDATE命令成功更新五行,但尝试更新第六行时出现异常,则将回滚此UPDATE命令对所有六行进行的更新。之前尚未提交或回滚的SQL命令的效果将挂起,直到执行了COMMIT或ROLLBACK命令。参数详细说明,请参见polar_comp_stmt_level_tx。 您可以通过SHOW命令查看当前数据库中该参数的设置情况。
|
wal_level
| 该参数用于决定将多少信息写入到WAL中。取值如下: |
log_statement
| 该参数用于设置审计日志的级别。默认为ddl,表示只有DDL对应的SQL才会进行审计,更少的日志打印可以提升数据库性能。取值如下: |
常见参数参考
说明 部分参数不支持在控制台上进行修改,您可以通过登录集群并使用命令行的方式进行查看与修改。
连接与认证
参数 | 说明 |
authentication_timeout
| 设置客户端完成身份认证的最长等待时间。如果客户端在此时间内未能完成认证,服务器将主动关闭连接,以防止有问题的客户端长时间占用连接资源。 |
ssl
| 控制实例是否启用并支持SSL加密连接。 |
自动清理 (Autovacuum)
自动清理(Autovacuum)进程负责回收死元组(已删除或已更新的数据行所占用的空间)并更新表的统计信息,对维持数据库性能至关重要。
参数 | 说明 |
autovacuum
| 控制是否启用自动清理(autovacuum)后台进程。为保证功能正常,参数track_counts也必须启用。
说明 即使禁用此参数,当需要防止事务ID回卷时,系统仍会强制启动清理进程。 |
autovacuum_max_workers
| 指定可同时运行的自动清理工作进程(除自动清理启动器外)的最大数量。 |
autovacuum_naptime
| 指定自动清理进程在检查完一个数据库后,再次检查该数据库之前的最小休眠时间。在每一轮中后台进程检查数据库并根据需要为数据库中的表发出VACUUM和ANALYZE命令。 |
autovacuum_vacuum_threshold
| 触发VACUUM操作所需的最少变更(增、删、改)元组数。 取值范围:0~2147483647 默认值:50 单位:元组数
|
autovacuum_vacuum_scale_factor
| 触发VACUUM操作时,表大小比例因子。实际阈值由autovacuum_vacuum_threshold和此因子共同决定,公式为:autovacuum_vacuum_threshold + (autovacuum_vacuum_scale_factor * 表的元组数)。 |
autovacuum_analyze_threshold
| 触发ANALYZE操作所需的最少变更(增、删、改)元组数。 取值范围:0~2147483647 默认值:50 单位:元组数
|
autovacuum_analyze_scale_factor
| 触发ANALYZE操作时,表大小比例因子。实际阈值由autovacuum_analyze_threshold和此因子共同决定,公式为:autovacuum_analyze_threshold + (autovacuum_analyze_scale_factor * 表的元组数)。 取值范围:0~2147483647 默认值:0.05 单位:百分比
|
autovacuum_freeze_max_age
| 在强制执行VACUUM以防止事务ID回卷前,表中最旧的事务ID可存在的最大年龄。系统会为阻止回卷而自动发起清理,不受autovacuum参数禁用的影响。 取值范围:100000~2000000000 默认值:500000000 单位:事务ID
说明 即便自动清理被禁用,系统仍将发起自动清理进程来阻止回卷。 |
autovacuum_multixact_freeze_max_age
| 在强制执行VACUUM以防止多事务ID(multixact ID)回卷前,表中最旧的多事务ID可存在的最大年龄。 取值范围:10000~2000000000 默认值:700000000 单位:事务ID
说明 即便自动清理被禁用,系统仍将发起自动清理进程来阻止回卷。 |
autovacuum_vacuum_cost_delay
| 用于自动VACUUM操作的代价延迟时间。如果设为-1,则沿用vacuum_cost_delay的值。 |
autovacuum_vacuum_cost_limit
| 用于自动VACUUM操作的代价限制值。该总限制值将按比例分配给所有正在运行的自动清理工作进程(如果存在多个进程),因此每个工作进程的限制值之和将不会超过此变量中的值。如果设定为-1,则将沿用vacuum_cost_limit的值。 取值范围:-1~10000 默认值:10000 单位:代价值
|
检查点与后台写入
参数 | 说明 |
checkpoint_timeout
| 设置自动WAL检查点之间的最长时间间隔。 |
bgwriter_delay
| 后台写入进程(background writer)两轮刷脏页操作之间的休眠时间。 取值范围:10~10000 默认值:600000 单位:毫秒
|
backend_flush_after
| 当后台进程写入的脏页数量超过此阈值后,操作系统会将文件缓存中的数据刷新到磁盘。 |
full_page_writes
| 控制在检查点(checkpoint)之后,当一个数据页首次被修改时,是否将整个页面的内容写入WAL日志。此功能用于防止因断电等故障导致的页面部分写入问题。 |
wal_buffers
| 用于在内存中暂存WAL数据的共享内存大小。 |
wal_level
| 控制写入WAL(预写式日志)的信息量级别。不同级别支持不同功能:replica提供只读服务的备库节点,logical提供逻辑复制服务。 取值范围:replica/logical 默认值:replica
|
wal_writer_delay
| WAL写入进程(walwriter)在两轮WAL刷盘操作之间的最大休眠时间。 取值范围:1~10000 默认值:600000 单位:毫秒
|
查询计划与执行
参数 | 说明 |
constraint_exclusion
| 控制查询优化器是否使用表约束(如CHECK约束)来优化查询,尤其适用于分区表的查询剪枝。 |
cpu_index_tuple_cost
| 设置规划器对一次索引扫描中处理每一个索引项的代价估计。 取值范围:0~1.79769e+308 默认值:0.005
|
cpu_operator_cost
| 设置规划器对于一次查询中处理每个操作符或函数的代价估计。 取值范围:0~1.79769e+308 默认值:0.0025
|
cpu_tuple_cost
| 设置规划器对一次查询中处理每一行的代价估计。 取值范围:0~1.79769e+308 默认值:0.01
|
enable_partition_pruning
| 控制查询优化器是否在计划阶段和执行阶段启用分区剪枝优化,以跳过对无关分区的扫描。 |
seq_page_cost
| 设置规划器对一次顺序磁盘页面获取的代价估计。 |
jit
| 控制是否为特定查询启用即时编译(Just-In-Time Compilation)以加速执行。 |
超时设置
参数 | 说明 |
deadlock_timeout
| 在检查到可能存在死锁之前,一个事务所等待锁的最长时间。 取值范围:0~2147483647 默认值:1000 单位:毫秒
|
idle_in_transaction_session_timeout
| 事务处于空闲状态(idle in transaction)下的最长允许时间。超过此时间,会话将被终止。设置为0表示禁用此超时。 取值范围:0~2147483647 默认值:3600000 单位:毫秒
|
lock_timeout
| 单个操作等待获取表、行或其他对象锁的最长时间。超过此时间,操作将报错退出。设置为0表示禁用此超时,将无限等待。 取值范围:0~2147483647 默认值:0 单位:毫秒
|
statement_timeout
| 限制单条SQL语句执行的最长时间。超过此时间,该语句将被终止。设置为0表示无超时限制。 |
日志与审计
参数 | 说明 |
logging_collector
| 控制是否启用日志收集进程,该进程负责捕获并写入集群运行期间的日志。 |
log_connections
| 控制是否在日志中记录每一次成功的客户端连接。 |
log_disconnections
| 控制是否在日志中记录每一次客户端连接的断开。 |
log_error_verbosity
| 设置错误日志的详细程度。 取值范围: terse:仅包含严重性、主消息和位置 default:包含更多细节,如详细信息、提示等 verbose:所有详细日志
默认值:default
|
log_min_duration_statement
| 记录执行时间超过指定阈值的慢SQL。设置为0将记录所有SQL语句,设置为-1表示禁用慢SQL日志功能。 取值范围:0~2147483647 默认值:5000 单位:毫秒
|
log_statement
| 控制记录到日志中的SQL语句类型。 |
复制与高可用
参数 | 说明 |
hot_standby
| 控制备节点(只读节点)是否可以接受只读查询。 |
hot_standby_feedback
| 控制只读节点是否向主节点反馈其正在运行的查询信息。启用后,主节点会延迟清理那些只读节点查询仍在使用的旧数据行,以减少查询冲突。 |
max_replication_slots
| 实例能够支持的最大复制槽数量。 |
资源管理
参数 | 说明 |
dynamic_shared_memory_type
| 指定动态共享内存的实现方式。 取值范围:posix/sysv/mmap 默认值:posix
|
gin_pending_list_limit
| 设置GIN索引在快速更新模式下,待处理列表(Pending List)的最大内存大小。 取值范围:64~2097151 默认值:4096 单位:KB
|
huge_pages
| 控制实例是否尝试使用操作系统提供的大页内存。 |
max_files_per_process
| 每个数据库后台进程允许同时打开的最大文件句柄数。 取值范围:64~2147483647 默认值:10000
|
max_locks_per_transaction
| 每个事务能够持有的最大锁数量。 |
max_prepared_transactions
| 集群中允许同时处于准备状态的(两阶段提交)事务的最大数量。 |
max_worker_processes
| 集群能够启动的后台工作进程的最大总数,包括并行查询工作进程等。 |
temp_file_limit
| 限制单个后台进程可使用的临时文件(用于排序、哈希等操作)的总大小。设置为-1表示不限制。 取值范围:-1~2147483647 默认值:104857600(100 GB) 单位:KB
|
格式与行为
参数 | 说明 |
datestyle
| 设置日期和时间值的显示格式。 |
default_with_oids
| 用于控制CREATE TABLE是否默认包含OID。 |
extra_float_digits
| 控制浮点数显示时,在标准精度之外额外显示的有效位数。用于更精确地展示浮点数值。 |
fsync
| 控制数据库是否在关键操作(如COMMIT)后,强制将数据变更从操作系统缓存同步到物理磁盘。 |
timezone
| 指定数据库会话用于显示和解释时间戳的时区。 |