在postgresql中是否可以编辑当前正在运行的查询。或者终止该查询并在其位置激发另一个查询。我有一个程序的更新程序的问题。一个由生产者创建的查询是糟糕的优化。
6pp0gazn1#
不能修改当前正在运行的查询,但可以终止它。在启动查询的会话中,可以发送取消请求。在另一个数据库会话中,可以查询视图pg_stat_activity,以查找运行有问题的查询的数据库后端的pid(进程ID)。然后,使用获得的数字,可以使用以下命令中断查询
pg_stat_activity
pid
SELECT pg_cancel_backend(12345);
请注意,要查看pg_stat_activity中的条目或取消查询,您必须是运行查询的数据库用户。或者,您必须是具有高权限的数据库用户(超级用户或pg_read_all_stats和pg_signal_backend的成员)。您所能做的最好的事情是通过设置statement_timeout参数从一开始就防止问题发生,然后运行时间超过该限制的查询将被自动取消。
pg_read_all_stats
pg_signal_backend
statement_timeout
1条答案
按热度按时间6pp0gazn1#
不能修改当前正在运行的查询,但可以终止它。在启动查询的会话中,可以发送取消请求。在另一个数据库会话中,可以查询视图
pg_stat_activity
,以查找运行有问题的查询的数据库后端的pid
(进程ID)。然后,使用获得的数字,可以使用以下命令中断查询请注意,要查看
pg_stat_activity
中的条目或取消查询,您必须是运行查询的数据库用户。或者,您必须是具有高权限的数据库用户(超级用户或pg_read_all_stats
和pg_signal_backend
的成员)。您所能做的最好的事情是通过设置
statement_timeout
参数从一开始就防止问题发生,然后运行时间超过该限制的查询将被自动取消。