后台工作者 worker_spi 示例 PostgreSQL

Posted

技术标签:

【中文标题】后台工作者 worker_spi 示例 PostgreSQL【英文标题】:Background Worker worker_spi Example PostgreSQL 【发布时间】:2016-06-07 20:11:30 【问题描述】:

我正在尝试运行 PostgreSQL 文档中的演示后台工作程序示例。我是从https://github.com/postgres/postgres/tree/master/src/test/modules/worker_spi下载的

我能够编译代码并创建以下文件: “worker_spi.o”和“worker_spi.so”

然后我运行 worker_spi--1.0.sql 并使用:- \i worker_spi--1.0.sql。 最后,在连接到数据库后,我创建了 SQL 文件中指定的扩展名。但是,我认为它不起作用。我需要把这个“.so”文件放在其他目录中吗?非常感谢任何帮助。

【问题讨论】:

我不会关注链接中的链接。请张贴Minimal, Complete, and Verifiable example,它显示了您尝试过的内容。而且,“我认为它不起作用”并不能充分描述问题。 很抱歉给您带来了困惑。我只是想运行给出的演示示例。他们最初创建了一个模式和一个表。然后通过后台工作人员删除和更新表中的行。在初始创建表时,还会打印一条日志消息。 运行 SQL 脚本后,我无法看到任何架构或表。另外,postgreSQL 的默认日志文件位置是什么? 您需要运行 make install,我不知道这是否会与系统 Postgres(不是从您的代码签出构建的)一起使用。而且您可能不应该手动运行 worker_spi,而应该执行 CREATE EXTENSION。 谢谢。但是我需要将worker_spi.so复制到postgres的其他目录吗? 【参考方案1】:

是的,.so 文件需要安装到 PKGLIBDIR 中。

您可以通过运行“pg_config”了解 PKGLIBDIR 是什么。例如,在带有 PostgreSQL 9.4 的 Ubuntu 系统上,pg_config 将返回:

PKGLIBDIR = /usr/lib/postgresql/9.4/lib

此外,worker_spi--1.0.sql 应该安装到 SHAREDIR/extension 中。在带有 PostgreSQL 9.4 的 Ubuntu 系统上,从 pg_config 返回的 SHAREDIR 是:

SHAREDIR = /usr/share/postgresql/9.4

而worker_spi--1.0.sql的安装目录是:

/usr/share/postgresql/9.4/extension

一旦 worker_spi--1.0.sql 和 worker_spi.so 文件安装到正确的位置,您应该能够执行:

创建扩展 worker_spi;

来自任何数据库并安装扩展。

使用“\i worker_spi--1.0.sql”不会将其作为扩展安装,而是作为一组独立对象安装。

【讨论】:

感谢您的解释。这现在更有意义了。我将各自的文件复制到以下位置:“/usr/pgsql-9.4/share/extension”和“/usr/pgsql-9.4/lib”然后我重新启动了 postgres 服务器。最后,当我尝试创建所需的扩展时,它并没有被创建。我还有什么需要做的吗? 还有一个文件叫做:worker_spi.control。我需要把它放在其他目录吗? 您在尝试创建扩展程序时看到什么错误消息? 感谢您的解释。我现在可以创建一个扩展。也是所需的后台工作人员。我缺少的一个步骤是在我的配置文件中添加这个后台工作人员的数据库名称。所以在 postgresql.conf 中:worker_spi.database = ‘databasename’ 必须加上。

以上是关于后台工作者 worker_spi 示例 PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章

资深Linux系统管理员常用的15个很好用的Cron工作示例

工作线程与后台线程android有啥区别?

Rails:后台文件上传如何工作?

资深Linux 系统管理员常用的15个很好用的Cron工作示例

具有不同 Azure 总线订阅的多个后台工作人员

C#后端WebApi,前端Upload文件上传