postgres

Name

postgres --  意单用户模式运行一个 PostgreSQL服务器

Synopsis

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 的方法(只是概念上的,因为 postmasterpostgres 实际上是一样的程序); 我们不能这样直接调用它.第一种形式以交互单用户模式直接调用该服务器. 这种用法的主要用途是在 initdb 做初始化时用.有时候它被用做调试灾难性恢复.

当从 shell 上以交互模式调用时,用户可以输入查询并且结果会打印在 屏幕上,不过格式对开发人员更有用,对用户却差好多. 不过请记住,运行一个单用户后端并不适合于调试该服务器, 因为没有实际的进程间通讯和锁动作发生.

当运行一个单用户后端时,将把会话用户设置为 ID 为 1 的用户. 该用户不必实际存在,因此一个独立运行的后端可以用于对某些 以外损坏的系统表中进行手工恢复.在独立运行模式下,系统隐含地赋予 ID 为 1 的用户超级用户权限.

选项

如果 postgres 是由一个 postmaster 启动的,那么它继承后者的所有选项集.另外 postgres 相关的选项可以用 -o 开关从 postmaster 传递.

你可以通过设置一个配置文件来避免键入这些选项. 参阅管理员手册获取细节. 有些(安全的)选项还可以从联接过来的客户端设置, 这样就获得了一种应用无关的方法. 比如,如果设置了 PGOPTIONS 环境变量, 那么基于libpq的客户端就都把那个字串传递给服务器, 会解释成 postgres 命令行选项.

通用用途

选项 -A-B-c-d-D, 和 -F,以及--namepostmaster 里的有相同的含义.只是 -d 0 避免 postmaster 的调试级别传播到后端.

-e

把缺省日期风格设置为 "European",也就是说用 "日子在月份前面"规则(而不是月份在日子前面) 解释模糊的日期输入,并且在一些日期输出格式里日子在月份前面打印. 参阅PostgreSQL 用户手册获取更多细节.

-o filename

把所有调试和错误输出输出到 filename。 如果后端是由 postmaster运行的, 则忽略这个选项,并且使用从 postmaster 继承过来的stderr

-P

扫描/更新系统记录时忽略系统索引.对系统表/索引使用 REINDEX 时需要这个选项.

-s

在每条查询结束时打印时间信息和其他统计信息。 这个开关对测试性能和调节缓冲区数量有好处。

-Ssort-mem

声明内部排序和散列在求助于临时磁盘文件之前可以使用的内存数量。 该值是以 KB (千字节)为单位的,缺省是 512 KB。 注意对于复杂查询,可能有好几个并行的排序和/或散列, 而在它们把数据放到临时文件前,每个都会允许使用最多 sort-mem KB的内存。

单用户模式的选项

database

声明要访问的数据库的名字.如果忽略掉则缺省为用户名.

-E

回显所有查询。

-N

关闭把新行作为查询分隔符。

半内部选项

还有几个其他的选项可以声明,主要用于调试用途。 这些东西在这里列出只是给 PostgreSQL 系统开发人员使用的。 我们强烈反对使用这些选项。 另外这些选项的任何一项都可能在未来版本中消失而不加说明。

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

禁止某种扫描和连接方法的使用: si 分别关闭顺序和索引扫描,而 nm,和 h 分别关闭嵌套循环,融合(merge)和散列连接。

注意: 顺序扫描和嵌套循环都不可能完全被关闭。 -fs-fn 选项仅仅是在存在其他方法时阻 碍优化器使用这些方法罢了。

-i

避免查询执行,而只是显示规划树。

-O

允许修改系统表的结构.这个参数用于 initdb

-pdatabase

告诉后端服务器它是由一个 postmaster 启动的并对缓冲区管理和文件描述符等做出不同的假设。

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

打印与每个主要系统模块相关的查询记时统计。 它不能和 -s选项一块使用。

-vprotocol

声明这次会话使用的前/后端协议的版本数。

-Wseconds

一旦看见这个选项,进程就睡眠标出的秒数. 这样就给开发者一些时间把调试器附着在该后端进程上.

环境

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