受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

Chapter 19. 服务器配置

有许多配置参数会影响数据库系统的行为。本章第一节将介绍如何与配置参数交互。 后续各节将详细讨论每个参数。

19.1. 设置参数 #

19.1.1. 参数名称和值 #

所有参数名都是大小写不敏感的。每个参数都可以接受五种类型之一的值: 布尔、字符串、整数、 浮点数或枚举。该类型决定了设置该参数的语法:

  • 布尔: 值可以写为 onofftruefalseyesno10 (全部大小写不敏感)或上述任一值的无歧义前缀。

  • 字符串: 通常将值放在单引号内,值中的单引号要写两次。 然而,如果值是简单的数字或标识符,通常可以省略引号。 (在某些上下文中,匹配 SQL 关键字的值需要加引号。)

  • 数字(整数和浮点数): 数字参数可以按通常的整数和浮点格式指定;如果参数类型是整数, 小数值将四舍五入到最近的整数。整数参数还可以接受十六进制输入(以 0x 开头)和八进制输入(以 0 开头),但这些格式不能有小数部分。 不要使用千位分隔符。 除十六进制输入外,不需要引号。

  • 带单位的数字: 某些数字参数有隐含的单位,因为它们描述的是内存或时间的量。 单位可以是字节、千字节、块(通常为 8 KB)、毫秒、秒或分钟。 这些设置的无装饰数值将使用该设置的默认单位,可以从 pg_settings.unit 中获知。为方便起见,可以在设置时显式指定单位,例如对时间值使用 '120 ms',系统会自动将其转换为参数实际使用的单位。 注意,要使用此特性,值必须作为字符串(带引号)来写。 单位名称是大小写敏感的,数值和单位之间可以有空格。

    • 有效的内存单位有 B(字节)、 kB(千字节)、 MB(兆字节)、GB (吉字节)和 TB(太字节)。 内存单位的乘数是 1024,不是 1000。

    • 有效的时间单位有 us(微秒)、 ms(毫秒)、 s(秒)、min(分钟)、 h(小时)和 d(天)。

    如果指定了带单位的小数值,如果存在更小的单位, 将被四舍五入为下一个更小单位的倍数。 例如,30.1 GB 将被转换为 30822 MB 而不是 32319628902 B。 如果参数类型是整数,在任何单位转换后还会进行一次最终的整数舍入。

  • 枚举: 枚举类型的参数和字符串参数的写法相同,但限制为一组预定义的值。 此类参数允许的值可以在 pg_settings.enumvals 中找到。枚举参数值是大小写不敏感的。

19.1.2. 通过配置文件影响参数 #

设置这些参数最基本的方法是编辑文件 postgresql.conf, 它通常位于数据目录中。在数据库集簇目录初始化时,会安装该文件的一个默认副本。其内容示例如下:

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

每行指定一个参数。名称和值之间的等号是可选的。空白不重要(引号括起的参数值内部除外),空行会被忽略。 井号(#)表示该行余下部分是注释。不是简单标识符或数字的参数值必须用单引号括起。 要在参数值中嵌入单引号,可以写两个单引号(推荐)或使用反斜线转义单引号。 如果文件包含相同参数的多个条目,则忽略除最后一个之外的所有条目。

以这种方式设定的参数为集簇提供了默认值。除非这些设置被覆盖,活动会话看到的就是这些设置。 下面的小节描述了管理员或用户覆盖这些默认值的方法。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。