↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

postgres

postgres — 以单用户模式运行一个PostgreSQL服务器

大纲

postgres [-A [0] | [1] ] [-B nbuffers] [-c name=value] [-d debug-level] [-D datadir] [-e] [-E] [-f [s] | [i] | [t] | [n] | [m] | [h] ] [-F] [-i] [-N] [-o filename] [-O] [-P] [[-s] | [-t [pa] | [pl] | [ex] ]] [-S sort-mem] [-W seconds] [--name=value] database
postgres [-A [0] | [1] ] [-B nbuffers] [-c name=value] [-d debug-level] [-D datadir] [-e] [-f [s] | [i] | [t] | [n] | [m] | [h] ] [-F] [-i] [-o filename] [-O] [-p database] [-P] [[-s] | [-t [pa] | [pl] | [ex] ]] [-S sort-mem] [-v protocol-version] [-W seconds] [--name=value]

描述

postgres 可执行文件就是真正处理查询的 PostgreSQL 服务器进程。它通常不被直接调用;而是启动一个 postmaster 多用户服务器。

上面的第二种形式是 postmaster 调用 postgres 的方式(只是概念上如此,因为 postmaster 和 postgres 实际上是同一个程序);不应直接以这种方式调用它。第一种形式直接以交互式单用户模式启动服务器。这种模式的主要用途是在 initdb 引导期间。有时它也用于调试或灾难恢复。

从 shell 以交互模式调用时,用户可以输入查询,结果会打印到屏幕上,但其形式对开发者比对最终用户更有用。但要注意,运行单用户后端并不真正适合调试服务器,因为不会发生真实的进程间通信和锁定。

当运行独立后端时,会话用户将被设为 ID 为 1 的用户。这个用户并不需要真的存在,因此独立后端可用于从某些意外损坏系统目录的情况中手动恢复。在独立模式下, ID 为 1 的用户被隐式授予超级用户权限。

选项

当 postgres 由 postmaster 启动时,它会继承后者设置的所有选项。此外,postmaster 可以通过 -o 开关向它传递 postgres 特有的选项。

通过建立配置文件,你可以免于输入这些选项。详情见 管理员指南。某些(安全的)选项也可以由连接中的客户端以依赖于应用的方式设置。例如,如果设置了环境变量 PGOPTIONS,基于 libpq 的客户端会把该字符串传给服务器,服务器会把它解释为 postgres 的命令行选项。

通用选项

选项 -A、-B、 -c、-d、-D、 -F 和 --name 的含义与 postmaster 相同,只是 -d 0 会阻止 postmaster 的调试级别传播到后端。

-e

把默认日期风格设为“欧洲式”,即用“日在月前”(而不是月在日前)规则解释有歧义的日期输入,并且在某些日期输出格式中日在月之前打印。更多信息见 PostgreSQL 用户指南。

-o filename

把所有调试和错误输出发送到 filename。如果后端运行在 postmaster 之下,此选项会被忽略,转而使用从 postmaster 继承的 stderr。

-P

在扫描/更新系统元组时忽略系统索引。对系统表/索引执行 REINDEX 命令要求使用此选项。

-s

在每个查询结束时打印时间信息和其他统计信息。 这对基准测试或调整缓冲区数量很有用。

-S sort-mem

指定内部排序和哈希在求助于临时磁盘文件之前可使用的内存量。取值以千字节为单位指定,默认为 512 千字节。注意,对于一个复杂查询,可能有多个排序和/或哈希并行运行,每一个在被允许开始把数据放入临时文件之前,都可以使用多达 sort-mem 千字节。

独立模式的选项

database

指定要访问的数据库名称。如果省略,则默认为用户名。

-E

回显所有查询。

-N

禁用换行符作为查询分隔符。

半内部选项

还有一些其他选项,主要供调试之用。这里列出这些选项,仅供PostgreSQL 系统开发者使用。强烈不建议使用这些选项中的任何一个。此外,这些选项中的任何一个都可能在未来的版本中不经通知而消失或改变。

-f { s | i | m | n | h }

禁止使用特定的扫描和连接方法:s 和 i 分别禁用顺序扫描和索引扫描,而 n、m 和 h 分别禁用嵌套循环、归并和哈希连接。

注意

顺序扫描和嵌套循环连接都无法被完全禁用;-fs和 -fn选项只是在优化器 有其他选择时,尽量不使用这些计划类型。

-i

阻止查询执行,但显示计划树。

-O

允许修改系统表的结构。这由 initdb 使用。

-p database

表明此服务器是由 postmaster 启动的,并对缓冲池管理、文件描述符等做出不同的假定。

-t pa[rser] | pl[anner] | e[xecutor]

打印与各个主要系统模块相关的每个查询的时间统计信息。该选项不能与-s选项一起 使用。

-v protocol

指定该特定会话要使用的前端/后端协议 版本号。

-W seconds

一遇到此选项,进程就会休眠指定的秒数。这给开发者留出把调试器附加到后端进程的时间。

环境

PGDATA

默认数据目录位置

对于在单用户模式下影响不大的其他环境变量,见postmaster。

注意

要停止一个正在运行的查询,使用 SIGINT 信号。要让 postgres 重新读取配置文件,使用 SIGHUP 信号。postmaster 用 SIGTERM 通知 postgres 进程正常退出,用 SIGQUIT 终止而不做正常清理。用户不应使用这些信号。

用法

用类似下面的命令启动一个独立后端:

postgres -D $PGDATA other-options my_database

用 -D 提供数据库区域的正确路径,或者确保已设置环境变量 PGDATA。还要指定你想使用的具体数据库的名称。

通常,独立后端把换行符当作命令输入的终结符;它不像 psql 那样对分号有智能处理。要让一个命令跨多行继续,你必须在除最后一行之外的每个换行符之前输入反斜杠。

但如果使用 -N 命令行开关,换行符就不会终结命令输入。后端会读取标准输入直到文件结束(EOF)标记,然后把输入当作单个查询字符串处理。这种情况下反斜杠-换行不会受到特殊对待。

要退出会话,输入EOF (通常是Control+D)。 如果你使用了-N,则需要连续输入两次EOF才能退出。

注意,独立后端不提供复杂的行编辑特性(例如没有命令历史)。

另请参阅

initdb, ipcclean, postmaster

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。