您的位置:寻梦网首页编程乐园数据库PostgreSQL 7.2 Documentation

3.4. 运行时配置

有一堆配置参数可以用这样那样的方法影响数据库系统的行为. 我们在这里描述一下如何设置它们,然后在下一章我们将逐个 讨论它们.

所有参数名都是大小写不敏感的.每个参数都可以接受下面描述的布尔,整数, 浮点数,字符串四种类型之一.布尔值可以是 ON OFF TRUE FALSE YES NO 1 0 (大小写无关)或这些东西的任意清晰无 歧义的前缀.

设置这些选项的一个方法是在数据目录里比如 (在那里安装着一个缺省文件) 创建一个文件 postgresql.conf 比如,下面是一个例子:

# This is a comment
log_connections = yes
syslog = 2

象你看到的那样,选项是每条一行.选项名和值之间的等号是可选的. 空白和空行被忽略.井号( "#" )用做任何地方 引入注释.

每次 postmaster 收到 SIGHUP (最简单的发送方法就是 使用 pg_ctl reload ). 信号后都会重新读取这个配置文件. postmaster 同时也将这个信号广播给所有正在运行的后端进程,所以现有 会话也能得到新的缺省.另外,你可以只向一个后端进程直接发送信号.

第二种设置这些配置参数的方法是把它们作为命令行参数传递给 postmaster, 比如

postmaster -c log_connections=yes -c syslog=2

这样和上面的例子有同样效果. 命令行选项覆盖任何与 postgresql.conf 冲突的选项.

有时候,给某一个特定后端会话一个命令行参数也是很有用的. 可以在客户端使用环境变量 PGOPTIONS 来实现 这个目的:

env PGOPTIONS='-c geqo=off' psql

(这个选项可以用于任何客户端应用,不光是 psql .)请注意,这个变量对那些需要在 服务器启动后固定的选项是无效的,比如端口号.

最后,有些选项可以在独立的 SQL 会话中修改,使用 SET 命令,比如

=> 

SET ENABLE_SEQSCAN TO OFF;

请参考 SQL 命令语言手册获取命令语法的详细信息.

3.4.1. 规划器和优化器调节

CPU_INDEX_TUPLE_COST ( 浮点数 )

设置在一次索引扫描中优化器计算出来的处理每条索引元组的开销. 这是以一次顺序页面抓取的开销的分数来计量的.

CPU_OPERATOR_COST ( 浮点数 )

设置优化器计算出来的处理一条 WHERE 子句中的每个操作符的开销. 这是以一次顺序页面抓取的开销的分数来计量的.

CPU_TUPLE_COST ( 浮点数 )

设置优化器预计在一次查询中处理每条元组的开销. 这是以一次顺序页面抓取的开销的分数来计量的.

EFFECTIVE_CACHE_SIZE ( 浮点数 )

设置优化器假设的磁盘缓冲的有效尺寸(内核的磁盘缓冲中将被 PostgreSQL 数据文件使用的比例). 这是以磁盘页面计量的,通常是 8 kB/页.

ENABLE_HASHJOIN ( 布尔数 )

允许或禁止查询规划器使用散列连接( hash-join )规划类型. 缺省是允许.这个选项对调试查询规划器很有用.

ENABLE_INDEXSCAN ( 布尔数 )

允许或禁止查询规划器使用索引扫描规划类型. 缺省是允许.这个选项对调试查询规划器很有用.

ENABLE_MERGEJOIN ( 布尔数 )

允许或禁止查询规划器使用融合连接规划类型. 缺省是允许.这个选项对调试查询规划器很有用.

ENABLE_NESTLOOP ( 布尔数 )

允许或禁止查询规划器使用嵌套循环连接规划. 实际上不可能完全禁止使用嵌套循环连接,不过把这个选项设置为 禁止会令优化器在存在其它方法的情况下优先选用其它方法. 缺省是允许.这个选项对调试查询规划器很有用.

ENABLE_SEQSCAN ( 布尔数 )

允许或禁止查询规划器使用顺序扫描规划类型. 实际上不可能完全禁止规划器使用顺序扫描,不过把这个选项设置为 禁止会令优化器在存在其它方法的情况下优先选用其它方法. 缺省是允许.这个选项对调试查询规划器很有用.

ENABLE_SORT ( 布尔数 )

允许或禁止查询规划器使用明确的排序步骤. 实际上不可能完全禁止规划器使用排序,不过把这个选项设置为 禁止会令优化器在存在其它方法的情况下优先选用其它方法. 缺省是允许.这个选项对调试查询规划器很有用.

ENABLE_TIDSCAN ( 布尔 )

允许或禁止查询规划器使用 TID 扫描规划类型. 缺省是允许.这个选项对调试查询规划器很有用.

GEQO 布尔

允许或禁止基因查询优化,这是一种试图不通过穷举搜索来实现 查询规划的算法.缺省是允许.参阅各种其他 GEQO_ 设置.

GEQO_EFFORT 整数
GEQO_GENERATIONS 整数
GEQO_POOL_SIZE 整数
GEQO_RANDOM_SEED 整数
GEQO_SELECTION_BIAS 浮点数

各种各样的调节基因查询优化的参数: 缓冲池大小(pool size)是一个全体中的个体的数量.有效值介于 128 和 1024 之间.如果把它设置为 0(缺省),那么就使用 2^(QS+1) 大小的缓冲池,这里 QS 是查询中关系的数量.影响(effort)用于为每一代 计算一个缺省值.有效值是介于 1 和 80 之间的数字,40 是缺省值. 代(Generations)声明算法中的反复次数.此数字必须是正整数. 如果声明了 0,那么就使用 Effort * Log2(PoolSize) .此算法的运行 时间大概是缓冲池大小(pool size)和代(Generations)之和的分数. 选择偏移(selection bias)是全体内部的选择性压力 (selective pressure). 其值可以介于 1.50 到 2.00 之间;后者是缺省. 随机种子可以设置为让这个算法表现为能够产生可复现的值.如果把 它设置为 -1 那么此算法的行为将不可判定.

GEQO_THRESHOLD 整数

只有当涉及的 FROM 关系数量至少有 GEQO_THRESHOLD 个时, 才使用基因查询优化. (请注意一个 JOIN 构造只算做一个 FROM 项.) 缺省是 11,对于数量小于此数的查询,也许使用判定性的穷举搜索更有效. 这个参数也控制优化器在把子查询的 FROM 子句融合到 上层查询的时候到底使多大的劲.

KSQO 布尔

Key Set Query Optimizer(键集查询优化) KSQO )促使查询优化器把一个 WHERE 子句里面 有很多 OR,AND 子句的查询,( 比如 WHERE (a=1 AND b=2) OR (a=2 AND b=3) ... 转换成一个 union 查询.这个方法比缺省实现快得多, 但是它不一定给出完全一样的结果,因为 UNION 隐含地增加了一条 SELECT DISTINCT 子句以消除重复输出行. 当和类似 Microsoft Access 这样的 产品一起使用的时候,常常用到 KSQO ,因为它总是喜欢生成上面 样子的查询.

以前,对那些有许多 OR 和 AND 子句的查询, KSQO 是绝对必要的,但是到了 PostgreSQL 7.0 和以后,标准的规划器 就可以很合理地处理这些查询.因此缺省是关.

RANDOM_PAGE_COST 浮点数

设置优化器计算的一次非顺序磁盘页面抓取的开销. 这是以顺序磁盘页面抓取的开销的倍数计量的.

注意: 糟糕的是,我们没有很好的定义我们上面刚刚描述完的 "COST(开销)" 家族的典型值的方法.我们鼓励你自己试验并且与我们共享你的发现.

3.4.2. 日志和调试

DEBUG_ASSERTIONS 布尔

打开各种断言检查.这是调试助手.如果你经历了奇怪的毛病或者 崩溃,可能你希望把这个选项打开,因为它可能会暴露程序的错误. 要使用这个选项,制作 PostgreSQL 的时候必须定义 USE_ASSERT_CHECKING 宏. (参阅配置选项 --enable-cassert ). 请注意如果 PostgreSQL 是这样制作的话,那么 DEBUG_ASSERTIONS 缺省是 ON.

DEBUG_LEVEL 整数

这个值越高,那么在服务器运行过程中 就有越多 "调试" 日志生成. 缺省时,此值为 0,意味着没有调试输出.目前有意义的最高值为 4.

DEBUG_PRINT_PARSE 布尔
DEBUG_PRINT_PLAN 布尔
DEBUG_PRINT_REWRITTEN 布尔
DEBUG_PRINT_QUERY 布尔
DEBUG_PRETTY_PRINT 布尔

对于任何执行的查询,把该查询,它生成的分析树,它生成的执行规划,或者其 查询重写输出打印到服务器日志中. 选择 DEBUG_PRETTY_PRINT 会生成漂亮些但是长一些的输出格式. 把 DEBUG_LEVEL 设置为大与零的值会隐含地打开 这些标志中的一些.

HOSTNAME_LOOKUP 布尔

缺省时,联接日志只记录所联接主机的 IP 地址.如果你想显示主机名, 你可以打开这个选项,不过,这样有可能带来一些不可忽略的性能损失, --取决于你的名字解析的设置. 这个选项只能在服务器启动的时候设置.

LOG_CONNECTIONS 布尔

对每次成功的联接都向服务器日志里打印一行信息. 缺省时是关闭的,尽管它可能很有用.这个选项只能在服务器启动的时候设置, 或者在 postgresql.conf 配置文件里设置.

LOG_PID 布尔 ?/DT>

在每条服务器信息前面加上后端服务进程的进程号前缀. 这对理出某条信息属于那个联接很有帮助. 缺省时是关闭的.

LOG_TIMESTAMP 布尔

在每条服务器信息前面加上时间戳前缀. 缺省时是关闭的.

SHOW_QUERY_STATS 布尔
SHOW_PARSER_STATS 布尔
SHOW_PLANNER_STATS 布尔
SHOW_EXECUTOR_STATS 布尔

对每条查询,向服务器日志里输出相应模块的性能统计. 这是原始的调节工具.

SHOW_SOURCE_PORT 布尔

在联接日志信息里面显示正在连接的主机的端口号. 你可以回朔此端口号并找出是哪个用户初始化的联接. 因为这个功能基本没用,所以缺省是关闭. 这个选项只能在服务器启动的时候设置.

STATS_COMMAND_STRING ( boolean )
STATS_BLOCK_LEVEL ( boolean )
STATS_ROW_LEVEL ( boolean )

这些标志决定后端发送给统计收集进程的信息∶当前命令,块层次的活跃性 统计或者行层次的活跃性统计.所有的缺省都是关闭(off).打开统计收集 会导致每个查询多付出一点点时间开销,但是对于调试和性能优化确是无价的.

STATS_RESET_ON_SERVER_START ( boolean )

如果打开,那么在服务器启动的时候收集的信息被清零. 如果关闭,那么统计在服务器重起过程中累加.缺省是打开. 这个选项只能在服务器启动的时候设置.

STATS_START_COLLECTOR ( boolean )

控制服务器是否启动统计收集子进程.缺省时是打开, 但如果你对统计收集不感兴趣,那么可以关闭.这个选项只能在启动服务器时 设置.

SYSLOG 整数

PostgreSQL 允许把 syslog 作为日志系统.如果这个选项 设为 1,则信息同时往 syslog stdout 输出.如果设为 2, 则只输出到 syslog ? (有些信息还是会输出到 stdout / stderr .) 缺省是 0,意味着关闭向 syslog 的输出. 这个选项只能在服务器启动的时候设置.

要使用 syslog ,制作 PostgreSQL 时必须打开 --enable-syslog 配置选项.

SYSLOG_FACILITY ( 字串 )

这个选项在打开 syslog 后判断要使用的 syslog "功能" .你可以从 LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,LOCAL6,LOCAL7 中选择;缺省是 LOCAL0.参阅你的系统的 syslog

SYSLOG_IDENT ( 字串 )

如果打开了向 syslog 中记日志的功能, 这个选项决定用于在 syslog 日志信息中标识 PostgreSQL 的程序名.缺省是 postgres

TRACE_NOTIFY 布尔

LISTEN NOTIFY 命令生成一大堆调试输出.

3.4.3. 一般操作

AUSTRALIAN_TIMEZONES ( bool )

如果设置为真,那么 CST EST ,和 SAT 都解释成 Australian 时区,而不是北美中/东部时区和周六.缺省是假.

AUTHENTICATION_TIMEOUT ( integer )

完成客户端认证的最长时间,以秒记.如果一个准客户未能在这个时间长度内 完成认证协议,那么服务器将自行中断联接.这样就避免了挂起的客户端 无限制地占据联接.这个选项只能在服务器启动的时候在 postgresql.conf 文件里设置.

DEADLOCK_TIMEOUT 整数

这个是以毫秒计的时间,用于设置在检查是否存在死锁条件之前的等待 时间. 检查是否存在死锁条件是一个缓慢的过程,因此我们不希望我们每次 等待锁的时候都运行这个过程.我们(乐观地?)假设在生产应用中的死锁 是不常出现的,因此我们在开始询问是否可以解锁之前只等待一个锁 相对短的一段时间. 增加这个值就减少了浪费在无用的死锁检查上的时间,但是减慢了报告 真正死锁错误的速度. 缺省是 1000(也就是 1 秒),可能是你能够耐心等待的最短时间. 在一个重载的服务器上,你可能需要增大它.这个值的典型设置应该 超过你的事务的时间,这样就可以减少在锁释放之前就开始死锁检查的 问题. 这个选项只能在服务器启动的时候设置.

DEFAUL_TRANSACTION_ISOLATION ( 字串 )

每个 SQL 事务都有一个隔离级别,可以是 "读已提交" 或者是 "可串性化" .这个参数控制每个新的事务设置的 隔离级别.缺省是读已提交.

参考 PostgreSQL 用户手册 和命令 SET TRANSACTION 获取更多信息.

DYNAMIC_LIBRARY_PATH ( string )

如果需要打开一个可以动态装载的模块并且声明的名字没有目录 部分(也就是说名字里不包含斜扛),那么系统将搜索这个目录以 查找声明的文件.(所使用的名字就是在 CREATE FUNCTION 或者 LOAD 命令中声明的名字.)

用于 dynamic_library_path 的数值必须是一个冒号分隔的 绝对路径名字列表.如果一个路径名字以特殊变量 $libdir PostgreSQL 编译好的库目录,开头, 那么就替换为 PostgreSQL 发布提供的模块安装路径. 下面是一个例子数值∶

dynamic_library_path = '/usr/local/lib:/home/my_project/lib:$libdir:$libdir/contrib'

用于这个参数的缺省数值是 $libdir . 如果该数值设置为空字串,那么就会关闭自动路径查找.

这个参数可以在运行时由超级用户修改,但是请注意这样设置的 参数只持续到该客户联接的终止,因此这个方法应该保留给开发用途. 我们推荐在 postgresql.conf 配置文件里设置这个 参数.

FSYNC 布尔

如果这个选项打开, PostgreSQL 后端就会在若干个 位置调用 fsync() 系统调用以保证更新物理地写入磁盘 而不是悬在写缓冲区里. 这样做极大地增加了一个数据库安装在经历了大规模的操作系统或硬件 崩溃后仍然可用的机会.(数据库服务器的崩溃 不会 出现这个问题).

不过,这个操作大大地降低了 PostgreSQL 的速度,因为在所有的这些位置,它都必须 停下来等待操作系统输出它的缓冲区. 没有 fsync 的时候,操作系统就可以尽可能地处理好 缓冲,排序,和后写,因此可以有 非常 显著的性能提升. 不过,如果系统崩溃,一次已经提交的事务的部分数据--对应是磁盘上 的信息--将仍然停留在内存中.就可能导致不连贯的数据

这个选项一直在 PostgreSQL 用户和开发者社团里有 争论,有些人总是把它关闭,有些人只是在大量数据装载的时候才 关闭它,这样如果出错了的话就有一个显而易见的重新开始的起点. 有些人把它打开只是为了保证安全.因为这样做更安全,所以 缺省是打开的.如果你信任你的操作系统,你的 硬件和你的工具公司(或者是你的 UPS),你可能愿意关闭它.

我们需要指出的是做 fsync 的性能下降在 PostgreSQL 版本 7.1 里面比以前版本显著减少了.如果以前你因为性能原因 禁止了 fsync ,那么现在你可能会重新考虑一下.

这个选项只能在服务器启动的时候设置,或者设置在 postgresql.conf 文件里.

KRB_SERVER_KEYFILE ( 字串 )

设置 Kerberos 服务器密钥文件的位置.参阅 Section 4.2.3 获取细节.

MAX_CONNECTIONS 整数

决定允许多少个并发联接.缺省是 32 (除非在制作服务器的时候修改). 这个选项只能在服务器启动的时候设置.

MAX_EXPR_DEPTH 整数

设置分析器接受的最大表达式嵌套深度.缺省值对任何常见查询来说 都够高了,但是如果你需要的话你可以提高这个数值. (不过如果你把它升得太高,你就得冒因为栈溢出导致的后端崩溃 的风险.)

MAX_FILES_PER_PROCESS ( integer )

设置每个服务器子进程中同时打开的文件数目的最大值. 缺省是 1000.代码实际使用的限制要比这个设置以及 sysconf(_SC_OPEN_MAX) 的结果小. 因此,在那些返回合理限制的系统上,你用不着担心这个设置. 但是在一些平台上(特别是大多数 BSD 系统), sysconf 返回的值要远比大量进程同时试图打开该数量的文件时 系统所能支持的大.如果你发现自己看到 "打开太多文件(Too many open files)" 错误, 那么试着降低这个设置看看.这个选项只能在服务器启动时设置, 或者在 postgresql.conf 配置文件中设置; 如果在配置文件中修改了它,那么它只影响随后启动的服务器子进程.

MAX_FSM_RELATIONS ( integer )

设置那些自由空间是通过放在共享的自由空间映射表中进行跟踪的关系(表)的 最大数目. 缺省是 100.这个选项只能在服务器启动的时候设置.

MAX_FSM_PAGES ( integer )

设置那些自由空间是通过放在共享的自由空间映射表中进行跟踪的 最大磁盘页面数目.缺省是 10000.这个选项只能在服务器启动的时候设置.

MAX_LOCKS_PER_TRANSACTION ( integer )

共享表的大小是以假设任意时刻最多只有 max_locks_per_transaction * max_connections 个独立的对象需要被锁住为基础进行计算的.缺省值 64,已经经历史证明 是足够的了,不过如果你的客户可能在一个事务里面修改很多不同的表, 那么你就可能需要提高这个数值.这个选项只能在服务器启动的时候设置.

PORT 整数

服务器侦听的 TCP 端口;缺省 5432.这个选项只能在服务器启动的时候设置.

SHARED_BUFFERS 整数

设置数据库服务器将使用的共享内存缓冲区数量.缺省是 64. 每个缓冲区大小的典型值是 8192 字节. 这个选项只能在服务器启动的时候设置.

SILENT_MODE ( bool )

安静地运行 postmaster.如果设置这个选项, postmaster 将自动 在后台运行并且抛弃掉控制 tty,因此不会有任意信息输出到 stdout stderr (和 postmaster 的 -S 选项效果相同).除非打开了 比如 syslog 这样的日志系统, 我们不建议使用这个选项,因为这样令查找错误信息非常困难.

SORT_MEM 整数

声明在求助于临时磁盘文件之前用于内部排序和散列(hash)的内存 的数量.此值是以千字节为计量单位的,缺省为 512KB. 请注意,对于复杂查询,多个排序和/或散列(hash)可能会并行 运行,而且在开始向临时文件输出数据之前, 每个操作都会被允许使用这里声明的数量的内存. 因为每个后端都会做一个或更多的排序,因此需要的空间可能是 SORT_MEM 的许多倍.

SQL_INHERITANCE 布尔

这个选项控制继承语义,尤其是在缺省时是否在各种命令里考虑 把子表包括进来. 版本 7.1 以前的特性不是这样的.如果你需要老特性,你可以把这个变量 设为假,但是从长远看来,我们建议你修改你的应用以使用 ONLY 关键字来排除子表.参考 SQL 语言索引 和 用户手册 获取关于继承的更多信息.

SSL ( 布尔数 )

打开 SSL 联接.使用之前请参阅 Section 3.7 .缺省是关.

TCPIP_SOCKET 布尔

如果此值为真,那么服务器接受 TCP/IP 联接. 否则只接受本地的 Unix 域套接字联接. 缺省是关闭. 这个选项只能在服务器启动的时候设置.

TRANSFORM_NULL_EQUALS ( boolean )

如果打开它,那么下面这样的表达式 expr = NULL (或者 NULL = expr ) 被当做 expr IS NULL ,处理,也就是说, 如果 expr 得出 NULL 值则返回真,否则返回假. expr = NULL 的正确的行为总是返回 NULL(未知).因此这个选项缺省时是关闭的.

不果,在 Microsoft Access 里的过滤表单 生成的查询好像使用的是 expr = NULL 测试 NULL, 因此,如果你使用这个界面访问数据库,你可能想把这个选项打开. 因为形如 expr = NULL 的 表达式总是返回 NULL (使用正确的代换),因此它们并不常用, 而且在一般的应用中也不常见,因此这个选项实际上没有什么害处. 但是新用户常常在涉及 NULL 的表达式语义上感到胡涂, 因此我们缺省时并不打开这个选项.

请注意这个选项只影响文本的 = 操作符, 不包括其它比较操作符或者其它与一些涉及等号操作符的 表达式计算(比如 IN ).因此,这个选项不是 垃圾程序的狗皮膏药.

请参考 用户手册 获取相关信息.

UNIX_SOCKET_DIRECTORY ( string )

声明 postmaster 用于侦听来自客户端应用联接的 Unix 域套接字目录名. 缺省通常是 /tmp ,不过可以在制作时改变.

UNIX_SOCKET_GROUP ( string )

设置 Unix 域套接字的组所有人.(套接字的所有权用户总是启动 postmaster 的用户.)与 UNIX_SOCKET_PERMISSIONS 选项一起使用可以给这种套接字类型增加额外的访问控制机制. 缺省时是一个空字串,也就是使用当前用户的缺省的组. 这个选项只能在服务器启动时设置.

UNIX_SOCKET_PERMISSIONS ( 整型 )

给 Unix 域套接字设置访问权限.Unix 域套接字使用通常的 Unix 文件系统权限集.可选的值可以是一个 chmod umask 系统调用可以接受的数字模式. (要使用客户化的八进制格式,该数字必须以 0 (零)开头.)

缺省权限是 0777 ,意即任何人都可以联接. 合理的选则可能是 0770 (只有用户和组, 参阅 UNIX_SOCKET_GROUP )和 0700 (只有用户). (请注意对于 Unix 套接字而言,实际上只有写权限有意义,而且 也没有办法设置或者取消读或执行权限.)

这种访问控制机制是和 Chapter 4 . 里面描述的那些完全独立的.

这个选项只能在服务器启动时设置.

VIRTUAL_HOST ( string )

声明 postmaster 用于侦听来自客户端应用联接的 TCP/IP 主机名或者地址. 缺省是 PGHOST 环境变量的值, 如果没有设置 PGHOST ,缺省是侦听 所有配置了的地址(包括 localhost ).

3.4.4. WAL

又见 Section 11.3 获取 WAL 调节的细节.

CHECKPOINT_SEGMENTS ( 整数 )

在自动 WAL 检查点之间的最大距离,单位是日志文件段 (每个段一般是 16 兆字节). 这个选项只能在服务器启动的时候设置,或者设置在 postgresql.conf 文件里.

CHECKPOINT_TIMEOUT ( 整数 )

自动 WAL 检查点之间的最长时间,以秒计. 这个选项只能在服务器启动的时候设置,或者设置在 postgresql.conf 文件里.

COMMIT_DELAY ( integer )

写一个提交的记录到 WAL 缓冲和把缓冲冲刷到磁盘上的时间间隔, 以毫秒计.非零的延迟允许多个事务用一个 fsync 提交,条件是 系统的负荷高到在给出的间隔里其它的事务已经可以提交了. 如果没有其它的事务准备好进行提交,那么这个延迟就是浪费时间. 因此,这个延迟只有在后端把它的提交记录写出的瞬间至少有 COMMIT_SIBLINGS 个其它的事务活跃的情况下才执行.

COMMIT_SIBLINGS ( integer )

在执行 COMMIT_DELAY 延迟之前所要求的并行的打开的事务的最低数目. 数值越大,就越有可能至少有另外一个事务在延迟的间隔中做好了提交的 准备.

WAL_BUFFERS ( 整数 )

共享内存中用于 WAL 的磁盘页缓冲区数目. 这个选项只能在服务器启动时设置.

WAL_DEBUG ( 整数 )

如果为非零,则在 stderr 上打开与 WAL 相关的调试输出.

WAL_FILES ( 整数 )

在检查点时预先创建的日志文件数目. 这个选项只能在服务器启动的时候设置,或者设置在 postgresql.conf 文件里.

WAL_SYNC_METHOD ( 字串 )

用于强制 WAL 更新到磁盘上的方法.可能的数值是 FSYNC (在每次提交时调用 fsync() FDATASYNC (在每次提交时调用 fdatasync() OPEN_SYNC (用带 O_SYNC 选项的 open() 写 WAL 文件),或者是 OPEN_DATASYNC (用带 O_DSYNC 选项的 open() 写 WAL 文件). 并非在所有平台上都可以使用这些选项. 这个选项只能在服务器启动的时候设置,或者设置在 postgresql.conf 文件里.

3.4.5. 短选项

为了方便起见,这里还为许多参数提供了好多单字母选项开关. 它们在下表里描述.

Table 3-1. 短选项键字

短选项 等效 评注
-B x shared_buffers = x  
-d x debug_level = x  
-F fsync = off  
-h x virtual_host = x  
-i tcpip_socket = on  
-k x unix_socket_directory = x  
-l ssl = on  
-N x max_connections = x  
-p x port = x  
-fi , -fh , -fm , -fn , -fs , -ft enable_indexscan=off , enable_hashjoin=off , enable_mergejoin=off , enable_nestloop=off , enable_seqscan=off , enable_tidscan=off *
-S x sort_mem = x *
-s show_query_stats = on *
-tpa , -tpl , -te show_parser_stats=on , show_planner_stats=on , show_executor_stats=on *
由于历史原因,带有 "*" 标记的选项必须通过 postmaster 的 -o 选项传递给独立的后端进程,例如,

$ 

postmaster -o '-S 1024 -s'

或者通过客户端的 PGOPTIONS ,象前面的例子那样.