PostgreSql 参数配置

一、访问控制参数配置

https://xiaosonggong.blog.csdn.net/article/details/124264877

二、数据库参数配置

2.1 概述

PostgreSQL 的参数配置参数是在 postgresql.conf 文件中集中管理的,类似于 Oracle 的 pfile 文件,除此之外,PostgreSQL 还有一个 postgresql.auto.conf 文件,这个文件保存了通过 alter system 命令修改的设置,类似与 Oracle 的 spfile 文件,区别如下:

postgresql.conf pfile postgresql.auto.conf spfile
ASCII文本文件 ASCII文本文件 ASCII文本文件 二进制文件
手动编辑 手动编辑 手动编辑、alter system 修改 alter system 修改
重启库或重载配置文件生效 用 pfile 重启库生效 重启库或重载配置文件生效 立即生效或重启库生效

2.2 定义规则说明

示例如下

shell 复制代码
--postgresql.conf 部分示例
# - Memory -

shared_buffers = 128MB                  # min 128kB
                                        # (change requires restart)
#huge_pages = try                       # on, off, or try
                                        # (change requires restart)
#temp_buffers = 8MB                     # min 800kB
#max_prepared_transactions = 0          # zero disables the feature
                                        # (change requires restart)

--postgresql.auto.conf 部分示例
listen_addresses = '*'
max_connections = '200'
superuser_reserved_connections = '10'
shared_buffers = '500MB'
log_destination = 'csvlog'
logging_collector = 'on'
log_directory = 'logs'
  • 每一行指定一个参数。
  • 名称和值之间的等号是可选的,shared_buffers = 128MB 等效于 shared_buffers 128MB。
  • 空白是无意义的(除了在一个引号引用的参数值内)并且空行被忽略。
  • 井号(#)代表注释。
  • 所有配置项的参数名都是大小写不敏感的,shared_buffers = 128MB 等效于 SHARED_BUFFERS = 128MB。
  • 如果文件包含相同参数的多个条目,则忽略除最后一个之外的所有条目。
  • postgresql.auto.conf 文件会覆盖 postgresql.conf 文件中的同名配置。
  • 所有相对路径信息均相对数据库 data 目录而言,如上述日志目录 logs,全路径为 $PGDATA/logs。
  • 参数后的注释信息为该参数说明,如上述 # min 128kB,表示 shared_buffers 最小值为 128kB,# (change requires restart),表示 shared_buffers 参数修改需重启数据库生效。注释未注明需重启数据库生效的,一般重载配置文件即可生效。
shell 复制代码
pg_ctl reload -D 数据目录

等效于连入数据库执行

sql 复制代码
select pg_reload_conf();
  • 参数值有以下5种数据类型:

布尔:布尔值都是大小写无关的,可以是 on、off、true、false、yes、no、1、0。

整数:数值可以指定单位,如一些内存配置的参数可以指定 KB、MB、GB 等单位。

浮点数:可以指定小数的数值,如 "1.0"。

字符串:单引号包起来的字符串,如 'csvlog'。

枚举:不需要单引号引起来的字符串。

2.3 配置技巧

1) 支持 include 调用外部文件

管理大批量服务器时,模块化的管理配置往往是高效的。

shell 复制代码
--调用外部配置文件
include '/home/postgres/conf.d/shared.conf'
include '/home/postgres/conf.d/memory.conf'
include '/home/postgres/conf.d/server.conf'

--调用外部目录
include_dir '/home/postgres/conf.d'

--目录中配置文件可以按如下方式命令
00shared.conf
01memory.conf
02server.conf

调用外部目录时,存在如下限制

  • 只有.conf 结尾的非目录文件才会被包括。
  • 以 . 字符开头的文件名会被忽略。
  • 数据库将按照命名方式顺序调用,当存在重复参数时,最后调用的配置会覆盖之前的配置。

2)参数配置相关信息查询

sql 复制代码
--show 参数名可查看当前生效参数配置
postgres=# show log_statement;
 log_statement
---------------
 ddl
--上述效果等同于
postgres=# select setting from pg_settings where name = 'log_statement';
 setting
---------
 ddl

--枚举类型可选参数值查询
postgres=# select enumvals from pg_settings where name = 'log_statement';
      enumvals
--------------------
 {none,ddl,mod,all}

--参数描述查询
postgres=# select short_desc,extra_desc from pg_settings where name = 'log_statement';
             short_desc              | extra_desc
-------------------------------------+------------
 Sets the type of statements logged. |

--查询参数默认单位
postgres=# select unit from pg_settings where name = 'autovacuum_vacuum_cost_delay';
 unit
------
 ms

--查询参数如何生效
postgres=# select context from pg_settings where name  = 'log_statement';
  context
-----------
 superuser

context 字段值说明

internal :这类参数是只读参数,其中,有些参数是 postgres 程序写死的,或者是用不同的编辑选项确定的;有些参数是数据库实例初使化时就确定了的,比如创建实例时运行 initdb,可以使用一些命令行参数选项来确定某些参数的值,如可以在 initdb 中使用 -k 把参数 "data_checksums" 初使化为

"on",之后就不能再改变此参数值了。这类参数值不能在 postgresql.conf 中配置,因为它们是由postgres 程序或在初始化实例时写死的。
postmaster :改变这类参数的值需要重启 PostgreSQL 实例。在 postgresql.onf 文件中可改变这些参数后,需要重启 PostgreSQL 实例修改才能生效。
sighup :在 postgresql.conf 文件中改变这类参数的值不需要重启数据库,只需要向postmaster 进程发送 SIGHUP 信号,让其重启装载配置新的参数值就可以了。当然 postmaster 进程接收到 SIGHUP 信号后,也会向它的子进程发送 SIGHUP 信号,让新的参数值在所有的进程中生效。
backend :在 postgresql.conf 文件中更改这类设置无须重新启动服务器,只需要向 postmaster 发送一个 SIGHUP 信号,让它重新读取 postgresql.conf 文件中新的配置值,但新的配置值只会出现在修改之后的新连接中,已有的连接中该参数的值不会改变。这类参数的值也可以在新建连接时由连接的一些参数改变。例如,通过 libpq 的 PGOPTIONS 环境变量可以改变本连接的配置值。
superuser :这类参数可以由超级用户使用 SET 命令来改变,如检测死锁的超时时间的参数 "deadlock_timeout"。而超级用户改变此参数值时只会影响自身的 sesssion 配置,不会影响其他用户关于此参数的配置。向 Postmaster 进程发送 SIGHUP 信号也只会影响后续创建的连接,不会影响已有的连接。
user:这类参数可以由普通用户使用 SET 命令来改变本连接中的配置值。除了普通用户也可以改变外,这类参数与 superuser 类参数没有区别。

3)postgresql.conf 参数配置

https://xiaosonggong.blog.csdn.net/article/details/121038380

相关推荐
科技小花37 分钟前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸38 分钟前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain40 分钟前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希1 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神1 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员2 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java2 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿2 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴2 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU2 小时前
三大范式和E-R图
数据库