postgres
postgres — 运行一个 Postgres 单用户后端
大纲
postgres [dbname] postgres [ -BnBuffers] [ -C ] [ -DDataDir] [ -E ] [ -F ] [ -O ] [ -Q ] [ -SSortSize] [ -d [DebugLevel] ] [ -e ] [ -o ] [OutputFile] [ -s ] [ -vprotocol] [dbname]
输入
postgres 接受下列命令行参数:
dbname可选参数
dbname指定要访问的数据库的名称。dbname默认为环境变量USER的值。- -B
nBuffers 如果后端运行在 postmaster 之下,
nBuffers就是 postmaster 为它启动的后端服务器进程分配的共享内存缓冲区数量。如果后端独立运行,此选项指定要分配的缓冲区数量。该值默认为 64 个缓冲区,每个缓冲区 8k 字节(或者 config.h 中 BLCKSZ 设置的值)。- -C
不显示服务器版本号。
- -D
DataDir 指定用作数据库目录树根的目录。如果未给出 -D,默认的数据目录名是环境变量
PGDATA的值。如果未设置PGDATA,则使用的目录是$POSTGRESHOME/data。如果两个环境变量都未设置且未指定此命令行选项,则使用编译时设置的默认目录。- -E
回显所有查询。
- -F
禁用每个事务之后的自动
fsync()调用。此选项提升性能,但事务进行中发生的操作系统崩溃可能导致最近输入的数据丢失。没有fsync()调用时,数据由操作系统缓冲,晚些时候才写入磁盘。- -O
越过限制,使系统表结构可以被修改。这些表通常是表名以 "pg_" 开头的表。
- -Q
指定"安静"模式。
- -S
SortSize 指定内部排序和哈希在求助于临时磁盘文件之前可使用的内存量。取值以千字节为单位指定,默认为 512 千字节。注意,对于一个复杂查询,可能有多个排序和/或哈希并行运行,每一个在被允许开始把数据放入临时文件之前,都可以使用多达
SortSize千字节。- -d [
DebugLevel] 可选参数
DebugLevel决定后端服务器将产生的调试输出量。如果DebugLevel为一,postmaster 会跟踪所有连接流量,仅此而已。对于二级及更高级别,后端进程会打开调试,postmaster 显示更多信息,包括后端环境和进程流量。注意,如果没有为后端服务器指定发送其调试输出的文件,这些输出将出现在其父 postmaster 的控制终端上。- -e
此选项控制日期在进出数据库时如何被解释。如果给出了
-e选项,传给前端进程和从前端进程传来的日期将被假定为"欧洲"格式(DD-MM-YYYY),否则日期被假定为"美国"格式(MM-DD-YYYY)。后端接受多种格式的日期,对输入日期而言此开关主要影响有歧义情形的解释。更多信息见数据类型 [原文引用目标缺失] [查看原文章节]。- -o
OutputFile 把所有调试和错误输出发送到
OutputFile。如果后端运行在 postmaster 之下,错误消息仍会发送到前端进程以及OutputFile,但调试输出发送到 postmaster 的控制终端(因为只有一个文件描述符能发送到实际的文件)。- -s
在每个查询结束时打印时间信息和其他统计信息。这对基准测试或调整缓冲区数量很有用。
- -v
protocol 指定此特定会话要使用的前端/后端协议的编号。
还有几个可以指定的其他选项,主要用于调试目的。这里列出它们仅供 Postgres 系统开发者使用。强烈不鼓励使用这些选项中的任何一个。而且,这些选项中的任何一个都可能在任何时候消失或改变。
这些特殊用途的选项是:
- -A n|r|b|Q\fIn\fP|X\fIn\fP
此选项产生极大量的输出。
- -L
关闭锁定系统。
- -N
禁用换行符作为查询分隔符。
- -f [ s | i | m | n | h ]
禁止使用特定的扫描和连接方法:
s和i分别禁用顺序扫描和索引扫描,而n、m和h分别禁用嵌套循环、归并和哈希连接。注意
顺序扫描和嵌套循环连接都无法被完全禁用;
-fs和-fn选项只是在优化器有其他选择时,尽量不使用这些计划类型。- -i
阻止查询执行,但显示计划树。
- -p
dbname 向后端服务器表明它是由 postmaster 启动的,并对缓冲池管理、文件描述符等做出不同的假定。-p 之后的开关仅限于那些被认为"安全"的。
- -t pa[rser] | pl[anner] | e[xecutor]
打印与每个主要系统模块相关的每个查询的计时统计信息。此选项不能与
-s一起使用。
输出
直接执行后端服务器时你可能看到的错误消息近乎无穷多,其中最常见的可能是:
semget: No space left on device如果看到这条消息,你应当运行 ipcclean 命令。做完之后再尝试启动 postmaster。如果仍然不行,你多半需要按照安装说明中的描述为共享内存和信号量配置内核。如果你的内核共享内存和/或信号量限制特别小,可能需要重新配置内核以增大其共享内存或信号量参数。
提示
通过减小 -B 以降低 Postgres 的共享内存消耗,你或许可以推迟重新配置内核。
描述
Postgres 后端服务器可以直接从用户 shell 执行。这只应在 DBA 调试时进行,而不应在这组数据库的其他 Postgres 后端正由 postmaster 管理时进行。
这里解释的一些开关可以通过连接请求的"数据库选项"字段传给后端,这样就能为特定后端设置它们而不必费力重启 postmaster。这对调试相关的开关特别方便。
可选参数
dbname
指定要访问的数据库的名称。dbname
默认为环境变量
USER 的值。
注意
处理共享内存问题的有用工具包括 ipcs(1)、 ipcrm(1) 和 ipcclean(1)。另见 postmaster [原文引用目标缺失] [查看原文章节]。