postgresql中终止正在执行的SQL语句

时间:2023-03-10 06:38:47
postgresql中终止正在执行的SQL语句

在Linux系统中可以使用kill [pid]的方式强制删除进程,但对于修改数据表的语句来说,这样可能导致postgresql进入recovery mode,这样会导致锁表。

Postgresql的运行情况可以从pg_stat_activity查看,这是一个位于pg_catalogschema中的视图。其中部分字段如下

  • datname: 数据库名称
  • pid: 命令的PID
  • query_start: SQL语句开始的时间
  • query: SQL语句的内容
  • client_addr: 执行SQL语句的客户端IP地址

对于修改表的操作,例如update、insert等,可以使用pg_catalogschema中的函数pg_terminate_backend函数完成

SELECT pg_terminate_backend(PID);