PostgreSQL 如何检查我的函数是否仍在运行

标签 postgresql postgresql-9.3

只是一个简单的问题。

我在 PostgreSQL 9.3 中有一个重要的功能,我如何检查该功能是否在几个小时后仍在运行以及如何在 psql 后台运行一个功能(我的连接有时不稳定)

谢谢

最佳答案

对于长时间运行的函数,不时让它们RAISE LOGRAISE NOTICE 很有用,以指示进度。如果他们遍历数百万条记录,您可能会每隔几千条记录发出一条日志消息。

有些人还(ab)使用SEQUENCE,他们在函数中获取序列的nextval,然后直接读取序列值以检查进度。这很粗糙但很有效。我更喜欢尽可能记录日志。

要处理断开连接,请通过 ssh 在远程端运行 psql,而不是通过 PostgreSQL 协议(protocol)直接连接到服务器。正如 Christian 建议的那样,使用 screen 这样远程 psql 就不会在 ssh session 结束时被杀死。

或者,您可以使用随处可用的传统 unix 命令 nohup:

nohup psql -f the_script.sql </dev/null &

这将在后台运行 psql,将所有输出和错误写入名为 nohup.out 的文件。

您可能还会发现,如果启用 TCP keepalive,无论如何都不会丢失远程连接。

关于PostgreSQL 如何检查我的函数是否仍在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22761223/

相关文章:

django - 注释查询集排名字段的正确方法

postgresql - PhpStorm - 错误 : type "hstore" does not exist

postgresql - pg_upgradecluster 花费太多时间(165GB 数据库大约需要 8 小时)有什么解决方法吗?

json - PostgreSQL 中#> 和->> 运算符有什么区别?

PostgreSQL:如何越狱'?

sql - 从 PostgreSQL 存储过程返回记录集的最简单方法是什么?

postgresql - 与其他图数据库相比,AgensGraph 重吗?

postgresql - 如何创建一个通常在条目更新之前的条目后运行的函数?

sql - postgres根据条件执行存储过程

sql - 将多行(查询结果)传递给函数