使用以下三個(gè)SQL語句來取消正在運(yùn)行的查詢并終止連接
創(chuàng)新互聯(lián)公司是一家專業(yè)提供海湖新企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、html5、小程序制作等業(yè)務(wù)。10年已為海湖新眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
(1)查出活動(dòng)連接列表及其進(jìn)程ID
select * from pg_stat_activity;
(2)取消連接上的活動(dòng)查詢
select pg_cancel_backend(procid);
該操作不會(huì)終止連接本身
(3)終止該連接
select pg_terminate_backend(procid);
如果你未停止某個(gè)連接上正在執(zhí)行的語句就直接終止該連接,那么這些語句此時(shí)也會(huì)被停止掉。在上述步驟2執(zhí)行完畢后,客戶端應(yīng)用的掛起狀態(tài)被解除,即客戶端可以重新執(zhí)行語句,有些著急的用戶會(huì)在此時(shí)再次執(zhí)行剛剛被終止掉的語句,這又會(huì)導(dǎo)致系統(tǒng)陷入之前的狀態(tài)。為了避免此種情況的發(fā)生,可以采用直接
終止連接的方式。
如果你希望一次性終止某個(gè)用戶的所有連接,那么在9.2版及之后的版本上可以執(zhí)行以下語句:
select pg_terminate_backend(pid) from pg_stat_activity where username='some_role';
在9.2版之前的版本上可以執(zhí)行以下語句:
select pg_terminate_backend(procpid) from pg_stat_activity where username='some_role';