Postgresql数据库修改deadlock_timeout参数

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/
500 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)查看该参数
Postgresql数据库修改deadlock_timeout参数
pending_restart —boolean— true if the value has been changed in the configuration file but needs a restart; or false otherwise.
即该参数为实时生效型参数

(5)尝试使用
test=# 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)尝试执行
set 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 reload
server signaled

(9)查看该参数已生效
edb=# show deadlock_timeout;

deadlock_timeout

1s
(1 row)

退出
edb=# \q

第9步也可通过重启数据库生效
停止指令:
./pg_ctl stop -m fast

启动指令:
./pg_ctl -D /DATA/data_utl start