postgresql - PostgreSQL:在完成之前通过 dblink 获取查询的 PID
问题描述
我想监视我通过 dblink 发送的查询dblink_send_query
,因此我需要它的PID,以便我可以在 pg 表中搜索它。但是到目前为止,我只能在 dblink 完成后通过返回值获得PIDpg_backend_pid()
,或者通过使用查询字符串从 pg_stat_activity 中获取它来完成它,这不考虑多个相同的查询,或者对于那些查询来说真的不理想文字长。
那么如何在它完成之前获得 PID 呢?
select dblink_send_query('cn1', 'select pg_sleep(60)');
select dblink_send_query('cn2', 'select pg_sleep(60)');
select dblink_send_query('cn3', 'select pg_sleep(60)');
x86_64-pc-linux-gnu 上的 PostgreSQL 11.6,由 gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) 编译,64 位
解决方案
后端进程 ID 将在 dblink 连接的整个生命周期内保持不变。
因此,当您打开连接时,SELECT pg_backend_pid()
首先运行并将结果保存在与连接关联的数据结构中。然后,您可以查询该数据结构以获取该连接的后端进程 ID。
推荐阅读
- gatling - 如果测试系统未处于正确状态,我如何中止 Gatling 模拟?
- ruby-on-rails - 使用 concat content_tag 获得双换行符
- android - 增强android应用程序对处理器资源的使用
- xml - 如何在 hive 中附加 xml 数据并添加 xml 版本和编码
- html - 积极的
- javascript - 如何使用axios或fetch支持IE7
- python - 如何从 docker 容器中的 python 脚本连接到 localhost 上的 mysql 数据库
- python - Python中时间序列的牛顿算法函数
- python-3.x - Python:一个线程如何在恢复执行之前等待其他线程结束?
- ios - 翠鸟:'setBackgroundImage(with:for:placeholder:options:progressBlock:completionHandler:)' 的模糊使用