Table of Contents
有许多配置参数会影响数据库系统的行为。本章第一节将介绍如何与配置参数交互。 后续各节将详细讨论每个参数。
所有参数名都是大小写不敏感的。每个参数都可以接受五种类型之一的值: 布尔、字符串、整数、 浮点数或枚举。该类型决定了设置该参数的语法:
布尔: 值可以写为 on、 off、 true、 false、 yes、 no、 1、 0 (全部大小写不敏感)或上述任一值的无歧义前缀。
字符串: 通常将值放在单引号内,值中的单引号要写两次。 然而,如果值是简单的数字或标识符,通常可以省略引号。 (在某些上下文中,匹配 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 中找到。枚举参数值是大小写不敏感的。
设置这些参数最基本的方法是编辑文件 postgresql.conf, 它通常位于数据目录中。在数据库集簇目录初始化时,会安装该文件的一个默认副本。其内容示例如下:
# This is a comment log_connections = yes log_destination = 'syslog' search_path = '"$user", public' shared_buffers = 128MB
每行指定一个参数。名称和值之间的等号是可选的。空白不重要(引号括起的参数值内部除外),空行会被忽略。 井号(#)表示该行余下部分是注释。不是简单标识符或数字的参数值必须用单引号括起。 要在参数值中嵌入单引号,可以写两个单引号(推荐)或使用反斜线转义单引号。 如果文件包含相同参数的多个条目,则忽略除最后一个之外的所有条目。
以这种方式设定的参数为集簇提供了默认值。除非这些设置被覆盖,活动会话看到的就是这些设置。 下面的小节描述了管理员或用户覆盖这些默认值的方法。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。