postgresql - 如何为 PostgreSQL 11 服务器设置后台工作人员?
问题描述
最近受命将部分数据库从Oracle迁移到PostgreSQL环境,作为测试实验。在此过程中,我遇到的主要缺点是缺乏简单的方法来实现并行性,这是由于多种设计原因所必需的,这里不那么相关。最近我发现了https://www.postgresql.org/docs/11/bgworker.html以下过程,这是我解决问题的某种方式。
然而并非如此,因为我无法轻易找到任何教程或示例如何实现它,即使是在进程运行时将调试消息写入记录器这样简单的任务。我尝试了一些旧方法,在 9.3 版的一些插件规范中提出,但它们并没有太大帮助。
我想知道如何正确设置这些工人。任何帮助都将不胜感激。
PS:另外,如果一些好心人找到了解决方法来为 PostgreSQL 中的游标实现批量收集,那么您将是最善良的,分享它。
解决方案
您链接到的 bgworker 文档用于编写 C 代码,这可能不是您想要的。你可以使用pg_background扩展,它会做你想做的事。在使用自主事务编译指示转换 oracle 过程时,ora2pg 将可选地使用 pg_background。另一种选择是使用 dblink 打开与当前数据库的连接。
这两种解决方案都不是很好,但如果您需要将数据存储在表中,无论封闭事务是否成功,这是唯一的方法。如果您只需将内容放入日志即可解决问题,则可以使用 RAISE NOTICE 代替。
就游标的批量收集而言,我不确定您是如何使用它们的,但设置返回函数可能会对您有所帮助。postgres 中的函数可以返回多行而无需摆弄游标。
推荐阅读
- unity3d - 有没有办法在着色器中合并 Unity 中的纹理?
- visual-studio-code - 如何在 VS Code 中切换环境
- ruby-on-rails - 使用 mail_form freeze 发送电子邮件,没有错误 rails
- r - 在函数内,如果找不到 xpath,则返回 NA 或 0
- python - 如何在普通图像上粘贴半透明图像并获得透明度 PIL?
- composer-php - 在 laravel 8 中安装氩仪表板时找不到类“Laravel\Ui\UiCommand”
- windows-10 - Windows 10 搜索不包括带点名称的文件夹?
- c++ - 从可执行文件中删除调试“标志”的 C++ 方法
- html - 引导轮播不工作或滑动
- reactjs - 如何在 ReactHooks 中使用 useRef 使子菜单的每一项都会独立改变背景