问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

年夜神请进,JDBC能获取到数据库某个毗连的PID吗?

发布网友 发布时间:2022-05-04 12:00

我来回答

6个回答

懂视网 时间:2022-05-04 16:22

先看下两个函数的官方解释: pg_cancel_backend() 取消后台操作,回滚未提交事物 pg_terminate_backend() 中断session,回滚未提交事物 这里和oracle类似kill session的操作是pg_terminate_backend() pg_cancel_backend() 举例: session A: postgres=# creat

先看下两个函数的官方解释:

pg_cancel_backend() pg_cancel_backend()

pg_cancel_backend() 取消后台操作,回滚未提交事物 pg_terminate_backend() 中断session,回滚未提交事物 这里和oracle类似kill session的操作是pg_terminate_backend() pg_cancel_backend() 举例:

session A:

postgres=# create table tb1 (a int); CREATE TABLE postgres=# begin;

postgres=# insert into tb1 select generate_series(1,100000000);

session B:

postgres=# select * from pg_stat_activity; datid | datname | procpid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_start | query_start | waiting | current_query -------+----------+---------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------- -----------+-------------------------------+---------+------------------------------------------------------ 12699 | postgres | 10305 | 10 | postgres | psql | | | -1 | 2013-12-03 14:38:05.887116+08 | 2013-12-03 15:12:17 .773935+08 | 2013-12-03 15:14:31.454816+08 | f | insert into tb1 select generate_series(1,100000000);

postgres=# select pg_cancel_backend(10305); pg_cancel_backend ------------------- t

session A: ERROR: canceling statement due to user request postgres=# commit; ROLLBACK postgres=# select * from tb1; a --- (0 rows)

session B:

postgres=# select * from pg_stat_activity; datid | datname | procpid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_start | query_start | waiting | current_query -------+----------+---------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------- -----------+-------------------------------+---------+--------------------------------- 12699 | postgres | 10305 | 10 | postgres | psql | | | -1 | 2013-12-03 14:38:05.887116+08 |

pg_terminate_backend() 举例:

session A:

postgres=# create table tb2 (a int); CREATE TABLE postgres=# begin; BEGIN postgres=# insert into tb2 select generate_series(1,100000000);

session B:

postgres=# select * from pg_stat_activity; datid | datname | procpid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_start | query_start | waiting | current_query -------+----------+---------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------- -----------+-------------------------------+---------+------------------------------------------------------ 12699 | postgres | 10305 | 10 | postgres | psql | | | -1 | 2013-12-03 14:38:05.887116+08 | 2013-12-03 15:24:22 .45073+08 | 2013-12-03 15:24:33.362185+08 | f | insert into tb2 select generate_series(1,100000000);

postgres=# select pg_terminate_backend(10305); pg_terminate_backend ---------------------- t (1 row)

session A:

postgres=# insert into tb2 select generate_series(1,100000000); FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command The connection to the server was lost. Attempting reset: Succeeded. postgres=# commit; WARNING: there is no transaction in progress COMMIT postgres=# select * from tb2; a --- (0 rows)

postgres=# select * from pg_stat_activity;

datid | datname | procpid | usesysid | usename | application_name | client_addr | client_hostname | client_port | backend_start | xact_start | query_start | waiting | current_query -------+----------+---------+----------+----------+------------------+-------------+-----------------+-------------+-------------------------------+-------------------- -----------+-------------------------------+---------+--------------------------------- 12699 | postgres | 10918 | 10 | postgres | psql | | | -1 | 2013-12-03 15:25:12.613672+08 | 2013-12-03 15:30:29 .544088+08 | 2013-12-03 15:30:29.544088+08 | f | select * from pg_stat_activity;

通过以上实验理解起来应该 很简单了,procpid=10305在pg_cancel_backend()下,session还在,事物回退,在pg_terminate_backend()操作后,session消失,事物回退。如果在某些时候pg_terminate_backend()不能杀死session,那么可以在os层面,直接kill -9 pid

热心网友 时间:2022-05-04 13:30

年迈,你给的这些内容很好,可是这些都是用户毗连完成之后查表获得的信息,而此刻最好是能够在成立毗连的同时就获得这个PID,这样就有了一个一一对应的关系,而如不美观用查到的数据进行配对的话切确性会斗劲差!

热心网友 时间:2022-05-04 14:48

pg_backend_pid()
获取当前毗连的历程号pg_terminate_backend(procpid)是杀死这个毗连pg_cancel_backend(procpid)是终止这个毗连正在运行的呼吁所以你应该用pg_cancel_backend

热心网友 时间:2022-05-04 16:22

这个可以看到PID,可是不知道怎么将这个PID和当前登录的用户连系起来?

热心网友 时间:2022-05-04 18:14

用户登录后,经由过程SELECT
*
FROM
pg_stat_activity取得procpid,这个是独一的,即使用户一再,你测试一下,我是测试经由过程的。

热心网友 时间:2022-05-04 20:22

不成以吗?用户登录->取得登录名保留->如不美观登录成功,经由过程
SELECT
*
FROM
pg_stat_activity按照登录名
查找PID。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苏州一级建造师能买吗? 我是苏州2013一级建造师考生,9月15日最后一门考试把身份证忘在课桌上... 二级建造师 报名 现场确认些什么 会不会问你工作内容什么的,试探你是否... 根据我国《刑法》的规定,下列属于公共财产的是()。 苏州一级建造师报名时间是不是已经过了,要是没有赶上,今年还能有什么其 ... 盗取国家公共财产罪 我是苏州2013一级建造师考生,9月15日最后一场把身份证忘在考场了,我... 二级建造师网上报名已经通过'请问现场初审能找人代替吗我在苏州报名的... 什么是刑法中规定的公共财产,公民私人所有的财产 犯罪构成要件公私财物是什么? 奔跑吧兄弟obaby贝比贝比哦哦的首歌叫什么名字 谁告诉这首歌叫什么 有一首英文歌高潮是贝比贝贝贝的,女生唱的节奏一般 刚建好的自建房,可以马上装修吗? 有一首dj,在卖场经常放的。歌的开头是中文的,哦~贝比贝,贝比又贝。不知道什么歌曲的dj版 一首英文歌节奏感很强 有句歌词大概是 噢贝比贝比 噢拉给拉给 跪求一首女声英文歌曲中间有贝比贝比哦哦哦哦哦英语不好 贝比贝比 哦唉~ 贝比贝比 哦唉~ 是什么歌曲? 贝比贝比贝比 这什么歌曲 苹果手机如何双开? 梦见火被盖着梦见火炉的火很旺 但是上面坐个锅 钱储存在银行卡那个账户,闪付扣的是那账户里的钱。 办准生证需要本人去办,可以代办吗 办老年证一定要本人去吗?需要准备哪些相关材料? 一定要本人才可以办理准生证吗 办什么事必须本人到场 身份证一定要本人才能办理吗? 办什么事必须要本人回家 鼻炎有什么办法好好的护理? 有鼻炎的人应该注意些什么? 刚刚建好的房子,可以马上投入装修吗? 谁有贝比贝比的这首歌的下载地址。歌词是:哦买 贝比贝比。。。 家里旧房子重新装修,你有什么好的建议吗? 有一首英文歌曲 歌词好像是 哦,贝比啦呀 男的 跪求! 啊 求一首欧美的音乐 开头是女声唱oh oh baby oh baby eeh 背景好像还有一些雨声 哦贝比别伤心我依然爱着你想着你 这叫什么歌啊 求了 有一首歌歌词是,贝比,我爱你,我想和你在一起是什么歌 老家有一栋九零年建的房子,大家觉得是重新装修好还是重建好呢? 新建的房子可以马上装修吗 我只记得中间有一句~~哦买贝比什么的 ~~~的英文歌~~~知道的朋友发一下!!!!! 谁知道一首歌,叫贝比,是一首英文的,我要的和QQ飞车的一样的 有一首歌 开头是这样的 :哦 贝比 你的眼神还在闪烁 那位大哥告诉我什么歌 在线等!! 有一首英文里面是这么唱的贝比啊no贝比又no:男生唱的还有部分说唱 老房翻新装修注意事项? 有首歌男生唱的,开头是慢唱,*第一句是贝比拉呀土………哦买贝比~真的想不起来是啥歌了!求大神! 新建的房子可以马上装修吗. 求一首英文歌,歌词里面有baby这个单词 农村自建房,在原有的房子加建全屋重新装修,是不是叫乔迁之喜? 愚人节英文谚语 一、把谚语补充完整