postgresql - 如何将后端 pid 与 Windows 应用程序相关联?
问题描述
我有两个连接到它的 Windows 进程的 postgres 数据库。一个是powershell脚本,另一个是ac#应用。两个进程在同一个盒子上运行,访问同一个数据库。
我偶尔会遇到锁定问题,签入 pg_locks 会给我阻塞和阻塞 pid。
如果我查看 Windows 任务管理器,我可以看到这两个 pid 的进程名称为“postgres.exe”
如何判断哪个 pid 指代 poweshell 进程,哪个指代 c# 应用程序?
解决方案
应用程序(或脚本)可以使用该函数告诉您它的 pidpg_backend_pid()
select pg_backend_pid();
或者,您可以application_name
在您的应用程序中设置不同的参数,并使用pg_stat_activity,
例如:
set application_name to 'my_distinct_name';
select l.*, a.application_name
from pg_locks l
join pg_stat_activity a using (pid);
推荐阅读
- curl - Why can't get redirect url with curl for the specified url?
- ios - 如何将角半径应用于 CAShapeLayer 的特定角,而不是 UIView
- html - 为什么锚点在改变 iframe 高度时会有不同的行为?
- chat - 打破 WhatsApp 聊天
- openssl - 为什么 openssl 提供两组相似/重复的 API:SSL_* 和 SSL_CTX_*
- android - 使用速记十六进制颜色的 Glide 的 SVG 问题
- php - Codeigniter:如何使用 url 将 UTF8 参数传递给控制器?
- swift - 在 Tableview 上保存 didSelectRowAt
- python-3.x - 如何使用 GitPython 获取 repo 的提交次数?
- python - 在烧瓶上制作多租户应用程序