PHP实战中知识总结 / PgSQL - postgres(bin目录文件)

一、pg_test_timing

postgres 是PostgreSQL数据库服务器。它会连接到一个运行着的postgres实例。该postgres实例会开始一个独立的服务器进程来处理该连接。

一个系统可以同时运行多个postgres实例,但每个实例需要使用不同的端口和数据目录,postgres启动时需要知道数据目录的位置,该位置必须通过-D选项或PGDATA环境变量指定(-D或PGDATA会直接指向由initdb创建的数据区目录)。

postgres还能在单用户模式中被调用。这种模式的主要用途是在启动过程中由initdb使用。单用户模式不会发生实际的进程间通信和锁定。当从 shell 中调用单用户模式时,用户可以输入查询并且结果会被以一种更适合开发者阅读(不适合普通用户)的形式打印在屏幕上。在单用户模式中,会话用户将被设置为 ID 为 1 的用户,并且这个用户会被隐式地赋予超级用户权限。该用户不必实际存在,因此单用户模式运行可以被用来对某些意外损坏的系统目录进行手工恢复。

二、命令格式

postgres [OPTION]...

1、option

参数说明
-B NBUFFERS设置被服务器进程使用的共享内存缓冲区数量。这个参数的默认值是initdb自动选择的。指定这个选项等效于设置shared_buffers配置参数
-c NAME=VALUE设置一个命名的运行时参数,-c可以出现多次用于设置多个参数
-C NAME打印运行时参数的值,然后退出
-d 1-5设置调试级别。数值设置得越高,写到服务器日志的调试输出就越多。取值范围是从 1 到 5。还可以针对某个特定会话使用-d 0来阻止父postgres进程的服务器日志级别被传播到这个会话
-D DATADIR指定数据目录
-e把默认日期风格设置为“European”,也就是输入日期域的顺序是DMY
-F禁用fsync调用以提高性能,但是要冒系统崩溃时数据损坏的风险。指定这个选项等效于禁用fsync配置参数
-h HOSTNAME指定postgres监听来自客户端应用 TCP/IP 连接的 IP 主机名或地址。该值也可以是一个用逗号分隔的地址列表,或者*表示监听所有可用的地址。一个空值表示不监听任何 IP 地址,在这种情况下可以使用 Unix 域套接字连接到服务器。缺省只监听localhost。声明这个选项等效于设置listen_addresses配置参数。默认只监听localhost。指定这个选项等效于设置listen_addresses配置参数
-i允许远程客户端使用 TCP/IP (互联网域)连接。没有这个选项,将只接受本地连接。这个选项等效于在postgresql.conf中或者通过-h选项将listen_addresses设为*
-k DIRECTORY指定postgres用来监听来自客户端应用连接的 Unix 域套接字的目录。这个值也可以是一个逗号分隔的目录列表。一个空值指定不监听任何 Unix 域套接字,在这种情况下只能用 TCP/IP 套接字来连接到服务器。默认值通常是/tmp,但是可以在编译的时候修改。指定这个选项等效于设置unix_socket_directories配置参数
-N MAX-CONNECT设置该服务器将接受的最大客户端连接数。该参数的默认值由initdb自动选择。指定这个选项等效于设置max_connections配置参数。
-o OPTIONS额外参数,这个选项的使用已经被废弃。用于服务器进程的所有命令行选项可以在postgres命令行上直接指定。
-p PORT指定端口,默认为PGPORT环境变量的值
-s在每条命令结束时打印时间信息和其它统计信息。这个选项对测试基准和调节缓冲区数量有用处。
-S WORK-MEM指定在使用临时磁盘文件之前排序和散列表使用的基本内存量
-V, --version打印postgres版本并退出
--NAME=VALUE设置一个命名的运行时参数;其缩写形式是-c
--describe-config这个选项会用制表符分隔的COPY格式导出服务器的内部配置变量、描述以及默认值。设计它的目的是用于管理工具
-?, --help显示有关postgres的命令行参数,并且退出

2、Developer options

参数说明
-f { s / i / o / b / t / n / m / h }禁止某种扫描和连接方法的使用:s和i分别禁用顺序和索引扫描,o、b和t分别禁用只用索引扫描、位图索引扫描以及 TID 扫描,而n、m和h则分别禁用嵌套循环、归并和哈希连接。顺序扫描和嵌套循环连接都不可能完全被禁用。-fs和-fn选项仅仅是在有其他选择时不鼓励优化器使用这些计划类型
-n该选项主要用于调试导致服务器进程异常崩溃的问题。对付这种情况的一般策略是通知所有其它服务器进程,让它们终止并且接着重新初始化共享内存和信号量
-O允许修改系统表的结构。这个选项用于initdb
-P读取系统表时忽略系统索引(但在更改系统表时仍然更新索引)。这在从损坏的系统索引中恢复时有用
-t pa[rser] / pl[anner] / e[xecutor]打印与每个主要系统模块相关的查询的时间统计。这个选项不能和-s选项一起使用。
-T该选项主要用于调试导致服务器进程异常崩溃的问题,该选项指定postgres将通过发送SIGSTOP信号停止其他所有服务器进程,但是并不让它们终止。这样就允许系统程序员手动从所有服务器进程收集内核转储
-W NUM在一个新服务器进程被启动时,它实施认证过程之后会延迟这个选项所设置的秒数。这就留出了机会来用一个调试器附着在服务器进程上。

3、Options for single-user mode

参数说明
--single选择单用户模式。这必须是命令行中的第一个选项
DBNAME指定要访问的数据库的名称。这必须是命令行中的最后一个参数。如果省略它,则默认为用户名
-d 0-5设置调试级别。数值设置得越高,写到服务器日志的调试输出就越多
-E在执行命令之前回显所有命令到标准输出。
-j使用跟着两个新行的分号而不是仅用新行作为命令终止符
-r FILENAME将所有服务器日志输出发送到filename中。 只有在作为一个命令行选项提供时,这个选项才会生效

命令实例解释
postgres --single -D /usr/local/pgsql/data启动单用户模式的服务器
nohup postgres >logfile 2>&1 </dev/null &后台启动
postgres -c work_mem=1234 -p 1234设置命名运行时参数并启动

PHP实战中知识总结