如何在pgsql中断连接拉?

时间:2014-04-11 14:45:56

标签: postgresql

CREATE OR REPLACE FUNCTION add_() RETURNS void AS 
$BODY$ 
declare
    foo int; 
BEGIN

FOR i IN 1..50 LOOP         
    foo = i;
    RAISE NOTICE 'combination_array(%)', foo ;
    UPDATE table_1 set r_id = foo WHERE id = (select id from table_1 where r_id is null order by id limit 1); 
END LOOP;

END; $BODY$ LANGUAGE 'plpgsql' ;

SELECT add_();

执行此操作后执行

UPDATE table_1 
   set r_id = foo 
WHERE id = (select id from table_1 where r_id is null order by id limit 1); 

END LOOP;

它会忙于任何人告诉我如何清除pgsql中的拉力

2 个答案:

答案 0 :(得分:4)

它返回与ids的所有连接

SELECT * from pg_stat_activity;

您可以通过procpid终止特定连接,但请遵循以下查询。

select pg_terminate_backend(procpid)
    from pg_stat_activity
    where datname = 'database-name'

答案 1 :(得分:0)

您可以向此忙碌的连接后端进程发送信号。

要取消正在运行的查询,请将SIGINT信号发送到运行该命令的进程。要干净地终止后端进程,请将SIGTERM发送到该进程。

表示exp:

pg93@db-172-16-3-150-> psql
psql (9.3.3)
Type "help" for help.
digoal=# select pg_sleep(1000000);
-- find the pid
-- ps -ewf|grep postgres
pg93     24872 23190  0 00:11 ?        00:00:00 postgres: postgres digoal [local] SELECT

-- send signal
pg93@db-172-16-3-150-> kill -s SIGINT 24872
-- then we see that feedback from psql.
ERROR:  canceling statement due to user request