postgresql 中的几个 timeout参数 用法说明

今天整理了下 postgresql 几个 timeout 参数

select version();
                         version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 10.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18), 64-bit
(1 row)
select *
from pg_settings ps
where 1=1
and ps.name like '%timeout%'
;
        name         | setting | unit |              category              |                    short_desc                     |       extra_desc       | context | vartype | source | min_val | max_val  | enumvals | boot_val | reset_val | sourcefile | sourceline | pending_restart
-------------------------------------+---------+------+--------------------------------------------------------------+-------------------------------------------------------------------------------------------+-------------------------------------+-----------+---------+---------+---------+------------+----------+----------+-----------+------------+------------+-----------------
 archive_timeout           | 0    | s  | Write-Ahead Log / Archiving                 | Forces a switch to the next WAL file if a new file has not been started within N seconds. |                   | sighup  | integer | default | 0    | 1073741823 |     | 0    | 0     |      |      | f
 authentication_timeout       | 60   | s  | Connections and Authentication / Security and Authentication | Sets the maximum allowed time to complete client authentication.             |                   | sighup  | integer | default | 1    | 600    |     | 60    | 60    |      |      | f
 checkpoint_timeout         | 300   | s  | Write-Ahead Log / Checkpoints                | Sets the maximum time between automatic WAL checkpoints.                 |                   | sighup  | integer | default | 30   | 86400   |     | 300   | 300    |      |      | f
 deadlock_timeout          | 1000  | ms  | Lock Management                       | Sets the time to wait on a lock before checking for deadlock.               |                   | superuser | integer | default | 1    | 2147483647 |     | 1000   | 1000   |      |      | f
 idle_in_transaction_session_timeout | 0    | ms  | Client Connection Defaults / Statement Behavior       | Sets the maximum allowed duration of any idling transaction.               | A value of 0 turns off the timeout. | user   | integer | default | 0    | 2147483647 |     | 0    | 0     |      |      | f
 lock_timeout            | 0    | ms  | Client Connection Defaults / Statement Behavior       | Sets the maximum allowed duration of any wait for a lock.                 | A value of 0 turns off the timeout. | user   | integer | default | 0    | 2147483647 |     | 0    | 0     |      |      | f
 statement_timeout          | 0    | ms  | Client Connection Defaults / Statement Behavior       | Sets the maximum allowed duration of any statement.                    | A value of 0 turns off the timeout. | user   | integer | default | 0    | 2147483647 |     | 0    | 0     |      |      | f
 wal_receiver_timeout        | 60000  | ms  | Replication / Standby Servers                | Sets the maximum wait time to receive data from the primary.               |                   | sighup  | integer | default | 0    | 2147483647 |     | 60000  | 60000   |      |      | f
 wal_sender_timeout         | 60000  | ms  | Replication / Sending Servers                | Sets the maximum time to wait for WAL replication.                    |                   | sighup  | integer | default | 0    | 2147483647 |     | 60000  | 60000   |      |      | f
(9 rows)

下面简单介绍下这几个参数

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/

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)查看该参数

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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • postgresql 中的参数查看和修改方式

    1.查看参数文件的位置 使用show 命令查看,比较常用的show config_file.此还可以查看pg_settings数据字典. test=# show config_file; config_file ------------------------------ /data/pgdata/postgresql.conf (1 row) test=# show hba_file test-# ; hba_file -------------------------- /data/pgda

  • postgresql 性能参数配置方式

    查询Linux服务器配置 在进行性能调优之前,需要清楚知道服务器的配置信息,比如说 CPU,内存,服务器版本等信息. 查询系统版本信息 root@ubuntu160:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.3 LTS Release: 14.04 Codename: trusty Linux查看物理CPU个数.核数.逻辑CPU个数 # 总核数

  • PostgreSQL流复制参数max_wal_senders的用法说明

    环境: PostgreSQL 9.2.4 主机:192.25.10.76 从机:192.25.10.71 做postgresql的流复制主从时,会遇到调整max_wal_sengers这个参数,官方文档对这个参数做了一个简要的说明(9.2.4比早先版本多了几句话并做了一些微调),但没有实际的例子. 1.参数说明: Specifies the maximum number of concurrent connections from standby servers or streaming bas

  • postgresql synchronous_commit参数的用法介绍

    synchronous_commit 指定在命令返回"success"指示给客户端之前,一个事务是否需要等待 WAL 记录被写入磁盘. 合法的值是{local,remote_write,remote_apply,on,off} 默认的并且安全的设置是on. 不同于fsync,将这个参数设置为off不会产生数据库不一致性的风险:一个操作系统或数据库崩溃可能会造成一些最近据说已提交的事务丢失,但数据库状态是一致的,就像这些事务已经被干净地中止.因此,当性能比完全确保事务的持久性更重要时,关

  • 基于PostgreSQL pg_hba.conf 配置参数的使用说明

    pg_hba.conf 配置详解 该文件位于初始化安装的数据库目录下 编辑 pg_hba.conf 配置文件 postgres@clw-db1:/pgdata/9.6/poc/data> vi pg_hba.conf TYPE 参数设置 TYPE 表示主机类型,值可能为: 若为 `local` 表示是unix-domain的socket连接, 若为 `host` 是TCP/IP socket 若为 `hostssl` 是SSL加密的TCP/IP socket DATABASE 参数设置 DATA

  • postgresql中wal_level的三个参数用法说明

    wal_level中有三个主要的参数:minimal.archive和hot_standby 1.minimal是默认的值,它仅写入崩溃或者突发关机时所需要的信息(不建议使用). 2.archive是增加wal归档所需的日志(最常用). 3.hot_standby是在备用服务器上增加了运行只读查询所需的信息,一般实在流复制的时候使用到. 补充:postgresql WAL相关参数 配置文件 # - Settings - wal_level = minimal # minimal, replica

  • postgresql 中的几个 timeout参数 用法说明

    今天整理了下 postgresql 几个 timeout 参数 select version(); version --------------------------------------------------------------------------------------------------------- PostgreSQL 10.3 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat

  • 关于爬虫中scrapy.Request的更多参数用法

    目录 爬虫中scrapy.Request的更多参数 scrapy.Request的参数 meta参数 scrapy中Request中常用参数 爬虫中scrapy.Request的更多参数 scrapy.Request的参数 scrapy.Request(url[,callback,method="GET",headers,body,cookies,meta,dont_filter=Fallse]) 参数解释: 中括号中的参数为可选参数,可写可不写 callback:表示当前的url响应

  • Postgresql中LIKE和ILIKE操作符的用法详解

    LIKE和ILIKE操作符可以模糊匹配字符串,LIKE是一般用法,ILIKE匹配时则不区分字符串的大小写. 它们需要结合通配符使用,下面介绍两种常用的通配符. %:百分号用于匹配字符串序列,可匹配任意组合: _:下划线用于匹配任何单一字符. 举例来说明LIKE和ILIKE操作符的区别. 先创建一张数据表table1,包含两列:id列和name列,代码如下: create table table1(id int, name varchar); insert into table1 values(1

  • 深入解读PostgreSQL中的序列及其相关函数的用法

    一.简介 序列对象(也叫序列生成器)就是用CREATE SEQUENCE 创建的特殊的单行表.一个序列对象通常用于为行或者表生成唯一的标识符. 二.创建序列 方法一:直接在表中指定字段类型为serial 类型 david=# create table tbl_xulie ( david(# id serial, david(# name text); NOTICE: CREATE TABLE will create implicit sequence "tbl_xulie_id_seq"

  • postgresql 中的加密扩展插件pgcrypto用法说明

    近期测试了一下postgresql的加密扩展插件pgcrypto的aes加密 安装加密扩展插件:pgcrypto 在主节点上安装 create extension pgcrypto; aes加解密函数简单介绍 encrypt(data bytea, key bytea, type text) --加密 decrypt(data bytea, key bytea, type text) --解密 data 是需要加密的数据:type 用于指定加密方法 ASE方式加密: select encrypt

  • postgreSQL中的case用法说明

    工具:postgreSQL Navicat Premium 又一次在看代码的时候,发现了不懂的东西! 这次就是case when then SQL CASE表达式是一种通用的条件表达式,类似于其它语言中的if/else语句. CASE WHEN condition THEN result [WHEN ...] [ELSE result] END 解释: condition是一个返回boolean的表达式. 如果为真,那么CASE表达式的结果就是符合条件的result. 如果结果为假,那么以相同方

  • Python中函数的参数定义和可变参数用法实例分析

    本文实例讲述了Python中函数的参数定义和可变参数用法.分享给大家供大家参考.具体如下: 刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解.其实只要把函数参数定义搞清楚了,就不难理解了. 先说说函数定义,我们都知道,下面的代码定义了一个函数funcA def funcA(): pass 显然,函数funcA没有参数(同时啥也不干:D). 下面这个函数funcB就有两个参数了, def funcB(a,

  • 详解C++编程中向函数传递引用参数的用法

    引用类型的函数参数 向函数传递引用而非大型对象的效率通常更高. 这使编译器能够在保持已用于访问对象的语法的同时传递对象的地址. 请考虑以下使用了 Date 结构的示例: // reference_type_function_arguments.cpp struct Date { short DayOfWeek; short Month; short Day; short Year; }; // Create a Julian date of the form DDDYYYY // from a

  • python中sys.argv参数用法实例分析

    本文实例讲述了python中sys.argv参数用法.分享给大家供大家参考.具体分析如下: 在学python的过程中,一直弄不明白sys.argv[]的意思,虽知道是表示命令行参数,但还是有些稀里糊涂的感觉. 今天又好好学习了一把,总算是大彻大悟了. Sys.argv[]是用来获取命令行参数的,sys.argv[0]表示代码本身文件路径,所以参数从1开始,以下两个例子说明: 1.使用sys.argv[]的一简单实例 import sys,os os.system(sys.argv[1]) 这个例

随机推荐