「PostgreSQL」- 服务端配置(=> Chapter 20. Server Configuration)

配置参数(Setting Parameters)

Parameter Names and Values

参数名大小写不敏感;

五种参数类型:
1)boolean:on, off, true, false, yes, no, 1, 0,或明确的前缀
2)string:单双引号进行引用;
3)Numeric:数值类型,整数、浮点数,十六进制;
4)Numeric with Unit:带有单位的数值类型;
5)enumerated (enum):枚举类型;

Parameter Interaction via the Configuration File

配置文件示例:

# This is a comment
log_connections = yes
log_destination = 'syslog'
search_path = '"$user", public'
shared_buffers = 128MB

配置保存在配置文件中:postgresql.conf,通过手动配置;postgresql.auto.conf,通过 ALTER SYSTEM 配置;
其中的等号是可选的,通过空格来分隔即可;
SIGHUP,pg_ctl reload,pg_reload_conf(),重新加载参数;部分参数需要重启;错误参数不会记录但不会被应用;
View pg_file_settings,用于:配置文件变化的预先测试,或如果 SIGHUP 不好用时诊断错误;

Parameter Interaction via SQL

通过 SQL 修改配置:
1)ALTER SYSTEM,修改 postgresql.auto.conf 配置文件;
2)ALTER DATABASE,覆盖全局配置,应用于数据库层面;
3)ALTER ROLE,覆盖全局或数据库配置,应用与用户层面;

当客户端连接成功后,能供通过如下命令与会话及变量进行交互:
1)SHOW
2)SET

视图 pg_settings 也能够用来修改参数:
1)类似 SHOW ALL 但是能够过滤;
2)通过 UPDATE 进行修改:UPDATE pg_settings SET setting = …

Parameter Interaction via the Shell

通过命令行,指定服务运行参数:postgres -c log_connections=yes -c log_destination=’syslog’

通过命令行,指定客户端参数:env PGOPTIONS=”-c geqo=off -c statement_timeout=5min” psql

Managing Configuration File Contents

PostgreSQL 配置文件支持拆分,通过如下指令引入配置文件:
1)include
2)include_if_exists
3)include_dir

配置文件(File Locations)

针对默认配置,其配置文件保存在数据目录中,但是能够进行修改:
1)data_directory,指定数据目录的位置;
2)config_file,指定 postgresql.conf 文件的位置,仅能通过命令指定;
3)hba_file,基于主机认证的配置文件的swithin,仅能通过命令指定;
4)ident_file,用户名映射的配置文件路径,仅能通过命令指定;
5)external_pid_file,指定 PID 文件的位置,仅能通过命令指定;

如果要将配置文件保存在数据目录之外,-D / PGDATA,必须指向配置文件目录,然后 postgresql.conf/data_directory 来修改数据目录位置;

能够通过 config_file, hba_file, ident_file 单独指定配置文件位置。config_file 必须通过命令行指定,其他选项可以在文件中指定。同时,如果还使用 data_directory 来指定数据目录位置,则没必要再使用 -D 选项(鉴于 -D 所隐含的目录位置已全被覆盖);

链接认证(Connections and Authentication)

Connection Settings

通过 listen_addresses port max_connections 参数(等等),能够控制服务的连接数;

superuser_reserved_connections,控制为 superuser 保留的连接数;

Authentication

通过 authentication_timeout password_encryption 参数(等等),能够控制认证方法;

db_user_namespace,针对数据库进行认证。

SSL

与 SSL 认证相关的内容;

资源消耗(Resource Consumption)

Memory

内存消耗相关配置;

Disk

磁盘及临时文件配置;

Kernel Resource Usage

内核资源配置;

Cost-based Vacuum Delay

限制 VACUUM and ANALYZE 的资源使用,在超过限制时,进行相关延迟(休息);

Background Writer

Background Writer 会周期发送将 Buffer 写操作,以释放部分 Buffer。否则,如果服务进程找不到赶紧的 Buffer,就需要自己写脏缓存。
当然 Background Writer 依旧会增加整体网络负担:相同周期内,buffer 被再次弄脏;

官方文档上描述用来控制 Background Writer 的选项;

Asynchronous Behavior

该部分的选项用于控制 PostgreSQL 的异步行为;

预写日志(Write Ahead Log)

该部分内容与 WAL 控制相关;

Settings

WIP

Checkpoints

WIP

Archiving

WIP

Archive Recovery

WIP

Recovery Target

WIP

主备复制(Replication)

该部分用户控制数据库的主从复制行为:Primary 负责发送数据;Standby 复制接收数据;在多级复制场景中,Standby 也能够发送数据;

Sending Servers

Primary 总是 Sending Server;

该部分的选项与 Sending Server 相关,不管是 Primary 还是 Standby,这些选项的含义都不会变化。

Primary Server

该部分选项与 Primary Server 相关,与 Standby Sever 无关。

Standby Servers

该部分选项与 Standby Server 相关,与 Primary Sever 无关。

Subscribers

这些设置控制逻辑复制 Subscriber 的行为。他们对 Publisher 是无关紧要的。

查询计划(Query Planning)

查询计划相关的配置;

Planner Method Configuration

WIP

Planner Cost Constants

WIP

Genetic Query Optimizer

WIP

Other Planner Options

WIP

错误日志(Error Reporting and Logging)

Where to Log

WIP

When to Log

WIP

What to Log

WIP

Using CSV-Format Log Output

将日志写入 CSV 文件,并且以供后续通过 COPY 导入数据库进行进一步的分析;

Process Title

对进程名进行控制;

运行统计(Run-time Statistics)

该部分参数控制统计特性,当开启特性后,通过 pg_stat 和 pg_statio 视图来查看相关数据;

Query and Index Statistics Collector

WIP

Statistics Monitoring

WIP

自动清理(Automatic Vacuuming)

控制 autovacuum 特性。

WIP

客户端连接配置(Client Connection Defaults)

Statement Behavior

WIP

Locale and Formatting

WIP

Shared Library Preloading

WIP

Other Defaults

WIP

锁管理(Lock Management)

WIP

版本及平台兼容(Version and Platform Compatibility)

Previous PostgreSQL Versions

Platform and Client Compatibility

错误处理(Error Handling)

WIP

预制选项(Preset Options)

WIP

自定义选项(Customized Options)

该特性允许将插件或模块添加的不属于 PostgreSQL 的选项按照标准方式进行配置。

WIP

开发者选项(Developer Options)

开发测试使用的一些选项。

Short Options

短选项,目的是方便使用。