从Postgres函数中生成新进程

时间:2013-11-14 04:24:36

标签: multithreading postgresql plpgsql postgresql-8.3

是否有可能在postgress函数中生成一个新进程来运行一个函数?或者根据文档,我是否仅限于原始请求的每个数据库连接一个线程?

单独的进程是创建和填充动态命名的表,不返回任何数据,并且独立于产生函数。在Postgresql 8.3。

3 个答案:

答案 0 :(得分:2)

程序语言应该做到这一点,例如:一个不受信任的人,例如PL/PerlU

其他可能的选项包括Pl/Python, Pl/Ruby, Pl/SH...

答案 1 :(得分:1)

不要这样做。如果你产生一个单独的过程,它将搞乱你所拥有的任何交易假设。在同一个过程中完成所有工作。如果必须,请将Listen / Notify视为让单独的守护程序知道如何工作的方法,并注意NOTIFY将在事务提交时引发。

答案 2 :(得分:1)

听起来你想在PL / PgSQL程序中运行异步查询。如果是这样,您可以使用dblink。甚至在你正在运行的古老且不受支持的版本中也是如此。参见手册;您想要的功能是dblink扩展名中的dblink_send_query

请记住,以这种方式运行的任何SQL都将在自己的事务中运行。它将独立于您的主要交易提交或回滚,并且它将无法看到您的主要交易所做的任何未提交的更改。

从客户端应用程序中执行此类操作通常更好。