对于 PostgreSQL 8.3 及更高版本,组成服务器并响应查询的进程有哪些?
各个过程对什么信号作出反应以及这些信号产生什么影响?
关于哪些信号应该或不应该发送以及何时应该或不应该使用,有哪些指导原则?
答案1
旧版本的 Postgres 使用信号来做更多的事情。我在这里写的是新发布的 8.4,它也适用于 8.3。如果您正在寻找有关旧版本的信息,请相应地更新您的问题。
Postgres 8.3 的“postmaster”将在收到 SIGTERM、SIGINT 和 SIGQUIT 信号时终止。与任何进程一样,您可以使用 SIGKILL 终止它,但这会导致不正常关闭并可能损坏数据库,因此应避免这样做。您也不应该向 postmaster 进程发送 SIGQUIT,因为这可能会被子 postmaster 进程解释为崩溃。不过,您确实应该使用 pg_ctl 来启动/停止 postmaster。
SIGHUP 导致 postmaster 重新读取其配置文件(许多 Unix 风格的应用程序都存在这种情况)。如果您希望所有正在运行的 postmaster 进程都重新读取其配置文件,则必须对它们执行 SIGHUP。
看http://www.postgresql.org/docs/8.4/static/app-postgres.html更多细节。
答案2
请查看任何版本手册中有关 postgres 服务器应用程序章节的“注释”部分。以下是 8.3.x 的链接:http://www.postgresql.org/docs/8.3/interactive/app-postgres.html