PostgreSQL开发与实战(3)参数整理

作者:太阳

引言

在管理和配置PostgreSQL数据库时,了解参数的分类和了解如何查看和更改这些参数是至关重要的。参数的分类涉及到不同的生效方式,如内部参数、需要重启生效的参数、不需要重启而可以重新加载配置文件生效的参数等。本文将介绍各类参数的分类及其在PostgreSQL中的作用。

一、参数的分类

参数的类型名称说明
internal内部参数,只读无法修改。postgres程序写死或者是在初始化指定后无法修改的参数
postmaster更改该类参数,需重启生效
sighup不需重启,重新加载配置文件即可生效,且会对当前所有进程生效
backend不需重启,重新加载配置文件即可生效,但只对新连接生效
superuser该类参数可由超级用户使用set命令来改变,只影响自身session配置,不影响其它会话;重新加载配置文件后只对新连接生效
user该类参数可由普通用户可以使用set命令来改变,只影响自身session配置,不影响其它会话;重新加载配置文件后只对新连接生效

二、查看与更改参数的方式

1、pg_settings视图

所有的配置参数都在系统视图pg_settings中,该视图各字段含义如下,其中context字段用于记录参数的类型:

name:运行时配置参数名
setting:参数的当前值
unit:存储参数的单位,如ms
category:参数的逻辑组
short_desc:参数的简短描述
extra_desc:附加的参数的详细描述
context:用于记录参数的类型,可根据该值判断参数修改是否需重启生效
vartype:参数类型 (bool, enum, integer, real, or string)
source:当前参数值的来源
min_val:参数的最小允许值(对非数字值为空)
max_val:参数的最大允许值(对非数字值为空)
enumvals:用于存储参数的可取值(对非数字值为空)
boot_val:如果参数没有被别的其他设置,此列为在服务器启动时设定的参数值
reset_val:在当前会话中,RESET将会设置的参数值
sourcefile:当前值被设置的配置文件(空值表示从非配置文件的其他来源设置,由不是超级用户也不是pg_read_all_settings成员的用户检查时也为空值),在配置文件中使用include指令时有用
sourceline:当前值被设置的配置文件中的行号(空值表示从非配置文件的其他来源设置,由不是超级用户也不是pg_read_all_settings成员的用户检查时也为空值)。
pending_restart:如果配置文件中修改了该值但需要重启,则为true,否则为false

2、查看参数

show xxx;或select current_setting('xxx');

3、修改参数

修改当前session的参数配置:
set maintenance_work_mem to '128M';select set_config('maintenance_work_mem','128M',false);ALTER SYSTEM动态修改全局参数:
ALTER SYSTEM SET configuration_parameter { TO | = } { value | 'value' | DEFAULT }
将参数从postgresql.auto.conf文件中移除
ALTER SYSTEM RESET configuration_parameter
将所有参数从postgresql.auto.conf文件中移除
ALTER SYSTEM RESET ALL
说明:
ALTER SYSTEM会把给出的参数 设置写入到postgresql.auto.conf文件中,该文件会随着 postgresql.conf一起被读入。
ALTER SYSTEM RESET可以把参数从postgresql.auto.conf文件中移除。使用 RESET ALL可以移除所有这类配置项。
用ALTER SYSTEM设置的值将在重新加载配置文件后生效(用pg_ctl reload或select pg_reload_conf();),那些只能在服务器启动时更改的参数则会在下一次服务器重启后生效。

4、令修改后的参数生效

1)重新加载配置文件
对于不需重启生效的参数,可在操作系统层执行pg_ctl reload或psql中执行select pg_reload_conf();重新加载配置文件令参数的修改生效。

2)重启生效
部分参数需重启生效,可查看pg_settings视图的pending_restart字段,如果为true表示需重启生效。

三、常见的各类参数

1、监听连接相关

参数含义
listen_addressesserver端对客户端的Tcp/ip监听地址,默认为"localhost"表示仅允许本地通过嵌套字连接,"*"表示监听所有IP,即允许所有IP访问
port服务器监听TCP端口,默认5432
max_connectionsserver端允许最大连接数,默认100
superuser_reserved_connectionsServer端为超级账号保留的连接数,默认3
unix_socket_directoryServer监听客户端Unix嵌套字目录,默认/tmp

2、内存相关

参数含义
shared_buffer共享内存缓存区大小,默认128MB
temp_buffers每个会话使用的临时缓存区大小,默认8MB
work_mem内存临时表排序操作或者hash需要使用到的内存缓存大小,默认4MB
maintenance_work_mem对于维护性操作(vacuum、create index)最大使用内存,默认64M,最小1M。
max_stack_depthServer端执行堆栈最大安全深度,默认2M,若发现无法执行复杂函数时可适当调整该参数

3、错误日志相关

参数含义
logging_collector是否打开日志
log_rotation_age超过多少天生产一个新的日志文件
log_rotation_size超过多少大小生成一个新的日志文件
log_directory日志目录,可以是绝对路径或相对PGDATA的相对路径
log_destination日志记录类型,默认是stderr,只记录错误输出
log_filename日志文件名,默认是postgresql-%Y-%m-%d_%H%M%S.log
log_truncate_on_rotation当日志名已存在时,是否覆盖原文件

4、慢SQL相关

参数含义
log_statement记录语句类型,none表示不开启,ddl标志仅仅记录DDL语句,all表示全部语句均记录
log_min_duration_statement单位ms,记录执行超过多少ms的语句

5、主从以及WAL相关

参数含义
wal_level可配置minimal、replica、logical,此配置决定多少信息写入wal日志中,更改参数需重启生效。minimal,只写入在数据库崩溃会突然关机进行恢复时所需要的信息;设置为replica,会添加一些备库只读查询时需要的信息,需要流复制物理备库、归档、时间点恢复时,需设置为replica;需要逻辑订阅或逻辑备库则设置为logical,logical增加支持逻辑解码所需的信息
fsync是否使用fsync()将内存中的脏页刷新到物理磁盘,默认为ON
synchronous_commit事务提交是否需要等待对应的wal日志刷盘,默认为ON;复制一致性要求模式,可设置 remote_apply、on(默认值)remote_write、local、 和off
wal_sync_methodwal日志刷盘方式
full_page_write当打开该参数时,当在检查点之后第一次修改一个页面时,整个页面都被写入wal,避免数据库崩溃恢复时数据页损坏
wal_log_hints在full_page_writes的基础上,即使数据页发生了一些不重要的更改,也会将整个页面写入到wal日志。若数据库使用pg_rewind,需要开启该参数或者打开 data checksums
wal_compression当开启full_page_writes参数或者进行基础备份时,是否对wal日志进行压缩,默认为off
wal_buffer数据库变更操作首先会写入wal buffer,然后wal buffer刷盘写入到wal log,一般可设置为wal log的1/32,但不建议过小或者过大,一般设置为16MB。
wal_writer_delaywal buffer进行刷盘从时间维度上的频率,默认200ms。若距离上一次刷盘时间小于 wal_writer_delay 且容量小于 wal_writer_flush_after ,wal仅仅会写入os,并不会进行刷盘
wal_writer_flush_afterwal buffer 进行刷盘从容量上的频率,默认为8kb。若距离上一次刷盘时间小于 wal_writer_delay 且容量小于 wal_writer_flush_after ,wal仅仅会写入os,并不会进行刷盘
max_wal_size在两次checkpoint期间wal日志增长最大限制,该参数的限制属于软限制。当archive异常、standby复制异常、重负载、wal_keep_segments参数设置过大时,该参数可能会进行扩展。该参数设置过大会影响数据崩溃恢复的时间
min_wal_size当wal日志空间占用小于该参数时,wal日志会被进行复用而不会被删除,该参数可确保批处理操作时有足够的wal空间进行存储,默认为80MB
wal_keep_size指定在 pg_wal 目录中保留的 wal segment file 的最小大小,以便流复制环境中的 standby server 从主库中 fetch wal file;单位MB
wal_sender_timeout发送方(主库)walsender进程的超时时间,如果存在超过这个时间、停止活动的复制连接,会被中断,默认以毫秒为单位,默认60s
wal_receiver_timeout接收方(从库)walreceiver进程的超时时间,如果存在超过这个时间、停止活动的复制连接,会被中断,默认以毫秒为单位,默认60s

6、复制相关

参数含义
max_wal_senders数据库启动wal发送进程的最大并发数(备用服务器复制或者基础备份)
max_replication_slots数据库可创建的复制槽个数
wal_keep_segments为保证备用服务器复制落后时,主数据库仍保留所需的wal日志的wal段大小
synchronous_standby_namesPG默认采用异步复制,如要配置同步复制,需将synchronous_standby_names设置为非空,synchronous_commit设置为ON
官网说明:http://postgres.cn/docs/13/runtime-config-replication.html#GUC-SYNCHRONOUS-STANDBY-NAMES
hot_standbystandby实例是否可进行查询
wal_sender_timeout中断那些停止活动超过指定毫秒数的复制连接。这对发送服务器检测一个后备机崩溃或网络中断有用。设置为0将禁用该超时机制,默认为 60 秒
wal_receiver_timeout从master实例接收wal的最大时间限制,终止处于非活动状态的复制连接。设置为0会禁用超时机制,默认值是 60 秒
hot_standby_feedback当开启该参数时,备用服务器执行大查询或者大事物期间,主数据库进行相应的vacuum操作时,保留备用服务所需的版本记录。若备份服务器长时间存在大查询或者大事物,会导致对应表膨胀

7、超时相关

参数含义
deadlock_timeout超过该参数的锁才会进行死锁检测,默认1s
lock_timeout锁等待超时时间,默认为0表示一直等待
statement_timeout控制语句执行时长,单位是ms。超过设定值,该语句将被终止
idle_in_transaction_session_timeout终止开启事务但空闲时间超过指定持续时间(以毫秒为单位)的任何会话,默认为0表示不开启该功能
checkpoint_timeout两次检查点之间的最长时间间隔,单位是秒
archive_timeout强制数据库切换新的wal日志的时间间隔,默认为0,表示禁用,一般1min设置是比较合理的
authentication_timeout完成服务器认证的最长时间,如果在这个时间内没有完成认证,服务器将关闭连接,默认1min
wal_sender_timeout中断那些停止活动超过指定毫秒数的复制连接。这对发送服务器检测一个后备机崩溃或网络中断有用。设置为0将禁用该超时机制,默认为 60 秒。
wal_receiver_timeout从master实例接收wal的最大时间限制,终止处于非活动状态的复制连接。设置为0会禁用超时机制,默认值是 60 秒。

8、vacuum相关

参数含义
vacuum_cost_delay超出成本计数后强制休眠时间,该参数不建议设置过大
vacuum_cost_page_hitvacuum操作命中 shared buffer 的代价消耗
vacuum_cost_page_missvacuum操作未命中 shared buffer 的代价消耗
vacuum_cost_page_dirtyvacuum操作未命中 shared buffer 后,需要将对应的dirty页刷盘的代价消耗
vacuum_cost_limit需要强制休眠的代价限制

9、异步相关

参数含义
effective_io_concurrency数据库允许会话级别进行并发磁盘I/O操作的数量
maintenance_io_concurrency数据库维护操作允许发起的并发磁盘I/O操作数量
max_worker_processes数据库支持最大后台进程数,默认为8,若调整改参数需要对应的调整以下参数:max_parallel_workers、max_parallel_maintenance_workers和max_parallel_workers_per_gather
max_parallel_workers_per_gather并行查询最大工作进程数,进程资源从 max_worker_processes 中获取,并受限于 max_parallel_workers
max_parallel_maintenance_workers数据库进行维护操作的最大并行进程数,进程资源从 max_worker_processes 中获取,并受限于 max_parallel_workers
max_parallel_workers数据库支持最大并行工作进程

更多技术信息请查看云掣官网https://yunche.pro/?t=yrgw

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G网络介绍

目录 一、网络部署模式 二、4/5G基站网元对标 三、4/5G系统架构对比 四、5G核心单元 五、边缘计算 六、轻量化(UPF下沉) 方案一:UPF下沉 方案二:UPF下沉 方案三:5GC下沉基础模式 方案四:…

05 动力云客之分页查询用户 + 查询用户详情 + 新增用户

1. 用户列表分页查询实现 核心 使用pageHelper实现分页 GetMapping(value "api/users")//分页的参数可以不传, 不传就默认设置为1public R userPage(RequestParam(value "current", required false) Integer current) {if (current null) {current …

docker下gitlab安装配置

一、安装及配置 1.gitlab镜像拉取 docker pull gitlab/gitlab-ce:latest2.运行gitlab镜像 docker run -d -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always --privilegedtrue -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v …

数据库 -neo4j的基本操作

启动: 终端输入:neo4j.bat console 查: 1.查询所有:MATCH (n) RETURN n 2.查询所有标签中,出生于1997的:Match(n{born:1997}) return n 删: 1.删除所有:MATCH (n) DETACH DELETE n 增&am…

【蓝桥备赛】蜗牛——动态规划

题目链接 蜗牛 个人思路 在每根竹竿都求出到达其底部和到达当前竹竿传送门入口的最小耗时&#xff0c;依次递推&#xff0c;求出最后一根竹竿底部的耗时。 参考代码 C 由于此处需要格式化输出小数点后两位&#xff0c;所以采用printf感觉更方便一些。 #include<bits/…

关于在Ubuntu20.04环境下安装GRPC

关于在Ubuntu20.04环境下安装GRPC 1 cmake安装 要在Ubuntu 20.04上安装CMake 3.26.4,请按照以下步骤进行操作: 打开终端并更新apt软件包列表: sudo apt update安装必要的依赖项: sudo apt install -y wget gcc g++ build-essential下载CMake 3.26.4的源代码: wget https…

12 Redis之Lua脚本

11. Lua脚本 Lua 是一个由标准 C 语言开发的、开源的、可扩展的、轻量级的、弱类型的、解释型脚本语言 常用于Nginx/分布式锁/ 先下载并安装Lua

table展示子级踩坑

##elemenui中table通过row中是否有children进行判断是否展示子集&#xff0c;通过设置tree-prop的属性进行设置&#xff0c;子级的children的名字可以根据自己的子级名字进行替换&#xff0c;当然同样可以对数据处理成含有chilren的子级list。 问题&#xff1a; 1.如果是根据后…

c++中使用lambda表达式的作用和用法

lambda表达式&#xff1a; 这是C11引入的一种新特性&#xff0c;它可以让您在需要定义函数对象的地方&#xff0c;直接编写一个匿名的、可以捕获上下文变量的函数体&#xff0c;非常适合用作回调函数、临时计算或定义小型函数对象。 lambda表达式与普通函数类似&#xff0c;也有…

存内计算技术大幅提升机器学习算法的性能—挑战与解决方案探讨

一.存内计算技术大幅机器学习算法的性能 1.1背景 人工智能技术的迅速发展使人工智能芯片成为备受关注的关键组成部分。在人工智能的构建中&#xff0c;算力是三个支柱之一&#xff0c;包括数据、算法和算力。目前&#xff0c;人工智能芯片的发展主要集中在两个方向&#xff1…

云计算新宠:探索Apache Doris的云原生策略

文章目录 Apache Doris 特性极简架构高效自运维高并发场景支持MPP 执行引擎明细与聚合模型的统一便捷数据接入 Apache Doris 极速 1.0 时代极速列式内存布局向量化的计算框架Cache 亲和度虚函数调用SIMD 指令集 稳定多源 关于 Apache Doris 开源社区基于云原生向量数据库Milvus…

Flink SQL 使用UDF函数实现将多行值转为数组

1、背景 在使用Flink SQL同步数据的实际场景中&#xff0c;会碰到需要将多行数据转为数组的情况。 以MySQL同步ES为例&#xff0c;假如我们需要把每个学生的选修课程用数组格式存到ES。 namecourse苏苏语文苏苏数学苏苏英语橙橙政治橙橙物理橙橙计算机 需要得到以下结果&…

腾讯云服务器宝塔面板中Docker应用无法访问

今天在用宝塔面板的时候用Docker一键部署Jenkins 发现部署好了端口也都开放了&#xff0c;防火墙也都开放了&#xff0c;安全组也都开放了。但是就是访问不了。 解决办法&#xff0c;在服务器终端执行下面指令 echo net.ipv4.ip_forward 1 >> /etc/sysctl.conf &…

【LeetCode-300】最长递增子序列(动归)

目录 题目描述 解法1&#xff1a;动态规划 代码实现 题目链接 题目描述 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例…

vmware 中虚拟机Ubuntu磁盘不够,扩展磁盘,并分配

vmware 中虚拟机Ubuntu磁盘不够&#xff0c;扩展磁盘&#xff0c;并分配 Ubuntu虚拟机处于关机状态。虚拟机 -> 设置 ->硬盘 ->扩展 &#xff0c;可以直接多给点&#xff0c;这里只是做演示。 3.开启虚拟机&#xff0c;一般不会报错&#xff0c;我这里报错了&#…

Base 链官方点名 $AYB,继续飙涨指日可待?

近期 $AYB&#xff08;All Your Base Are Belong To Us&#xff09; 成为了 BASE 链上最火的 meme 项目&#xff0c;据悉 $AYB 在去年年底上线至今涨幅已经超过了 100 倍&#xff0c;其在被各大加密社区、KOL 追捧的同时&#xff0c;也被公认是继 Solana 上的 $BONK、Avalanche…

【Leetcode每日一题】二分查找 - 寻找旋转排序数组中的最小值(难度⭐⭐)(22)

1. 题目解析 Leetcode链接&#xff1a;153. 寻找旋转排序数组中的最小值 这个题目乍一看很长很复杂&#xff0c;又是旋转数组又是最小值的 但是仔细想想&#xff0c;结合题目给的示例&#xff0c;不难看出可以用二分的方法来解决 核心在于找到给定数组里面的最小值 2. 算法原…

一文了解游戏从立项到发行的流程

背景 玩家从app商店下载一个游戏,看到了只是一个游戏客户端。那么,游戏从立项到用户下载,会经过哪些职能部门呢? 游戏项目经过的部门可以因公司和项目的规模而有所不同,但通常会涉及以下部门: 游戏相关部门 项目经理/制作人:研发团队核心角色,负责协调和管理游戏项目…

亚信安慧AntDB开启超融合数据库新纪元

&#xff08;一&#xff09; 前言 据统计&#xff0c;在信息化时代的今天&#xff0c;人们一天所接触到的信息量&#xff0c;是古人一辈子所能接收到的信息量的总和。当今社会中除了信息量“多”以外&#xff0c;人们对信息处理的“效率”和“速度”的要求也越来越高。譬如&…

协议-http协议-基础概念01-发展历程-http组成-http是什么-相关的应用-相关的协议

发展历程-http组成-http是什么-相关的应用-相关的协议 参考来源&#xff1a; 极客时间-透视HTTP协议(作者&#xff1a;罗剑锋)&#xff1b; 01-HTTP的发展历程 1989 年&#xff0c;任职于欧洲核子研究中心&#xff08;CERN&#xff09;的蒂姆伯纳斯 - 李&#xff08;Tim Ber…