首页 > 解决方案 > 如何将后端 pid 与 Windows 应用程序相关联?

问题描述

我有两个连接到它的 Windows 进程的 postgres 数据库。一个是powershell脚本,另一个是ac#应用。两个进程在同一个盒子上运行,访问同一个数据库。

我偶尔会遇到锁定问题,签入 pg_locks 会给我阻塞和阻塞 pid。

如果我查看 Windows 任务管理器,我可以看到这两个 pid 的进程名称为“postgres.exe”

如何判断哪个 pid 指代 poweshell 进程,哪个指代 c# 应用程序?

标签: postgresqlpowershell

解决方案


应用程序(或脚本)可以使用该函数告诉您它的 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);

推荐阅读