> 数据库 > PostgreSQL >

第 15 课 PostgreSQL 系统参数配置

参数文件

  • postgresql.conf :数据库配置文件
  • pg_hba.conf :
  • host-based authentication
  • 基于主机的认证配置文件
  • pg_ident.conf:基于身份的认证配置文件

参数的取值有四种类型:

  • boolean :Boolean values may be written as ON, OFF, TRUE, FALSE, YES, NO, 1, 0
  • Integer
  • floating point
  • string

参数的分类

按照参数的设置方式,系统参数可以分为:

  • 固定级
    系统一旦初始化,固定级参数的值就确定下来,是只读参数,不能对其重新设置,例如case_sensitive 等。
  • 系统级
    对所有数据库及连接是相同的。
    必须重新启动服务器才可以重新取值。
  • 全局级
    对所有数据库及连接是相同的。
  • 会话级
    该参数每个会话可以有不同的取值。

修改参数

Alter system set
  • ALTER SYSTEM SET ParameterName { = | TO } {ParameterValue | DEFAULT}
    修改系统级和全局级参数并修改系统配置文件 postgresql.conf 的参数设置。
    调用该命令的用户必须具有超级用户权限
  • 实现原理:
    修改系统配置文件postgresql.conf
    通过系统信号,重新加载该配置文件
  • 对于系统级参数,设置后不会立即生效,必须重新启动服务器才可生效,重启服务器后会对所有数据库及连接均有效。
  • 对于全局级参数,设置后不用重新启动服务器,就会对所有数据库及所有连接立即生效。如果设置为 DEFAULT 值,将不会立即生效,必须要重启服务器后才可生效。
Alter database set
  • ALTER DATABASE DatabaseName SET ParameterName { = | TO } { ParameterValue | DEFAULT}
  • 修改数据库的默认参数。
  • 在该数据库上启动的每个新会话(数据库连接)中,该参数的缺省值使用命令中的设定值并覆盖 postgresql.conf 的设定或启动命令行的设置。
  • 调用该命令的用户必须具有超级用户权限或为该数据库的所有者。
    在sys_database中记录参数信息

设置参数

set
  • SET [ SESSION | LOCAL ] ParameterName { TO | = } { ParameterValue | 'ParameterValue' | DEFAULT }
  • 使用SET命令设置的系统参数只对当前连接有效
  • SESSION :表示本次会话有效,当事务提交后,该设置生效,如果事务回滚,则退回到原来的值。
  • LOCAL:表示本次提交之前有效。当事务结束都回退成设置前的值。缺省为 SESSION。

查看当前session参数的取值

Show
显示配置参数的当前会话的取值。
SHOW ALL
SELECT
从 sys_settings 视图获取所需要的参数设置信息。





(责任编辑:IT)