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中相同。
- -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 一遇到此选项,进程就会休眠指定的秒数。这给开发者留出把调试器附加到后端进程的时间。
用法
用类似下面的命令启动一个独立后端:
postgres -D $PGDATA other-options my_database
用 -D
提供数据库区域的正确路径,或者确保已设置环境变量
PGDATA。还要指定你想使用的具体数据库的名称。
通常,独立后端把换行符当作命令输入的终结符;它不像 psql 那样对分号有智能处理。要让一个命令跨多行继续,你必须在除最后一行之外的每个换行符之前输入反斜杠。
但如果使用
-N
命令行开关,换行符就不会终结命令输入。后端会读取标准输入直到文件结束(EOF)标记,然后把输入当作单个查询字符串处理。这种情况下反斜杠-换行不会受到特殊对待。
要退出会话,输入
EOF(通常是
Control+D)。如果使用了
-N,则需要连续输入两次
EOF 才能退出。
注意,独立后端不提供复杂的行编辑特性(例如没有命令历史)。