postgresql中的几个timeout参数使用详解

 
下面简单介绍下这几个参数
 
archive_timeout控制服务器周期性地切换到一个新的 WAL 段文件,通俗的讲,就是定时归档。
 
authentication_timeout完成服务器认证的最长时间,如果在这个时间内没有完成认证,服务器将关闭连接。
 
checkpoint_timeout自动 WAL 检查点之间的最长时间,增大这个参数会使数据库崩溃后恢复的时间加长。
 
deadlock_timeout进行死锁检测之前在一个锁上等待的总时间
 
idle_in_transaction_session_timeout空闲事务超时。终止任何已经闲置超过这个参数所指定的时间(以毫秒计)的打开事务的会话。 这使得该会话所持有的任何锁被释放,并且其所持有的连接槽可以被重用, 它也允许只对这个事务可见的元组被清理。
 
lock_timeout锁等待超时。语句在试图获取表、索引、行或其他数据库对象上的锁时等到超过指定的毫秒数,该语句将被中止。不推荐在postgresql.conf中设置。
 
statement_timeout控制语句执行时长,单位是ms。超过设定值,该语句将被中止。
 
不推荐在postgresql.conf中设置,如非要设置,应该设置一个较大值。
 
wal_receiver_timeout中止处于非活动状态超过指定毫秒数的复制链接。这对于正在接收的后备服务器检测主服务器崩溃或网络断开有用。设置为0会禁用超时机制。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。默认值是 60 秒。
 
wal_sender_timeout中断那些停止活动超过指定毫秒数的复制连接。这对发送服务器检测一个后备机崩溃或网络中断有用。设置为0将禁用该超时机制。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。默认值是 60 秒。
 
补充:Postgresql数据库修改deadlock_timeout参数
 
某产品线提出要将Postgresql测试库中 deadlock_timeout 参数 修改为1s
 
该库平时不在自己手中维护,故实际操作步骤如下
 
(1)确定数据库安装所属用户
 
查看下都有哪些账户,可能是postgresql使用的
 
bash-4.1$ cd /home
bash-4.1$ ls
aquota.user enterprisedb lost+found prouser puppet
 
 
 
(2)确定数据库安装路径:
 
bash-4.1$ ps -ef | grep post 查看服务进程,找到应用安装目录 /opt/app/PostgresPlus/9.2AS/
 
1500 1891 1 0 2018 ? 01:01:47 /opt/app/PostgresPlus/9.2AS/bin/edb-postgres -D /DATA/data_utl
 
(3)切换到 enterprisedb 用户,并登陆数据库
 
bash-4.1$ su – enterprisedb
bash-4.1$ psql -U enterprisedb
psql (9.2.14.31)
Type “help” for help.
 
 
 
查看当前该参数配置 3s
 
edb=# show deadlock_timeout;
 
deadlock_timeout
 
3s(1 row)
(4)查看该参数
1pending_restart —boolean— true if the value has been changed in the configuration file but needs a restart; or false otherwise.
 
即该参数为实时生效型参数
 
(5)尝试使用
 
1test=# alter system set deadlock_timeout=‘1s';
 
报错如下:
 
ERROR: syntax error at or near “system”LINE 1:
 
alter system set deadlock_timeout=‘1s';
 
查询到解释:
 
alter system 命令 只对 9.4以后的版本 的版本有效,
 
(6)尝试执行
 
1set deadlock_timeout=‘1s'
 
edb=# show deadlock_timeout;
 
显示为1s
 
但是其余用户登录路,发现该参数依然为 3s
 
—-即该方法为session级别设置,类似于oracle的alter session set
 
(7) 尝试修改 pg配置文件,进入/DATA/data_utl 路径修改
 
bash-4.1$ pwd
/DATA/data_utl
bash-4.1$ ls
base pgbin pg_ident.conf pg_notify pg_stat_tmp pg_twophase postgresql.conf postmaster.opts
dbms_pipe pg_clog pg_log pg_serial pg_subtrans PG_VERSION postgresql.conf.20191119 postmaster.pid
global pg_hba.conf pg_multixact pg_snapshots pg_tblspc pg_xlog postgresql.conf.bak utlp.sql
vi postgresql.conf
 
 
 
将其中 deadlock_timeout 配置修改为1s
 
(8)重新加载数据库
 
bash-4.1$ ./pg_ctl reloadserver signaled
 
(9)查看该参数已生效
 
edb=# show deadlock_timeout;
deadlock_timeout
1s
(1 row)
 
 
 
退出
 
1edb=# \q
 
第9步也可通过重启数据库生效
 
停止指令:
 
1./pg_ctl stop -m fast
 
启动指令:
 
1./pg_ctl -D /DATA/data_utl start
【声明】:茂名站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章