如何在执行 psql/mysql CLI 命令行后获取查询 ID?
How to get query ID after executing psql/mysql CLI command line?
我正在使用 psql CLI 命令行查询 Redshift。 (问题也适用于 mysql)。查询可能需要很长时间才能执行。发送命令后,是否可以获取该查询的查询 ID 而 是 运行 而无需等待它完成。这可能吗?
例如,如果我稍后需要中止该查询 hours/days,我想向该特定查询的 Redshift 后端发送一个 CANCEL/ABORT 命令。注意:同一个数据库会被其他人使用,所以我想知道我执行的具体查询的ID。
此外,假设 psql 命令在 shell 中是 运行。是否可以在应用程序中以编程方式 (python) 从该 psql CLI 进程获取查询 ID?
在 mysql 中,您可以 运行 select connection_id()
在 运行 查询之前获取当前连接的连接 ID。在启动长 运行ning 查询后,您可以从另一个连接 运行 kill <id>
。
对于 Redshift,它是 select * from stv_recents where status='Running'
,您可以从那里获得 pid
在 Amazon Redshift 中,有几种方法可以确定 运行 查询 -
STV_INFLIGHT -
目前仅显示 运行 个查询 (http://docs.aws.amazon.com/redshift/latest/dg/r_STV_INFLIGHT.html)
select userid, usename, query, pid, starttime, "text",
suspended from stv_inflight s, pg_user u
where s.userid = u.usesysid
STV_RECENTS -
显示当前 运行 和最近完成的状态为 (http://docs.aws.amazon.com/redshift/latest/dg/r_STV_RECENTS.html)
的查询
select * from stv_recents;
现在,要中止 运行 查询,您需要当前 运行 查询的 pid(进程 ID)。然后,您可以使用以下命令之一终止查询 -
select pg_cancel_backend(<pid>); OR
select pg_terminate_backend(<pid>) ; OR
cancel <pid>;
查询#2
select userid, usename, query, s.pid, c.remotehost, c.application_name,
starttime, "text",
suspended from stv_inflight s, stl_connection_log c, pg_user u
where s.userid = u.usesysid and s.pid = c.pid
我正在使用 psql CLI 命令行查询 Redshift。 (问题也适用于 mysql)。查询可能需要很长时间才能执行。发送命令后,是否可以获取该查询的查询 ID 而 是 运行 而无需等待它完成。这可能吗?
例如,如果我稍后需要中止该查询 hours/days,我想向该特定查询的 Redshift 后端发送一个 CANCEL/ABORT 命令。注意:同一个数据库会被其他人使用,所以我想知道我执行的具体查询的ID。
此外,假设 psql 命令在 shell 中是 运行。是否可以在应用程序中以编程方式 (python) 从该 psql CLI 进程获取查询 ID?
在 mysql 中,您可以 运行 select connection_id()
在 运行 查询之前获取当前连接的连接 ID。在启动长 运行ning 查询后,您可以从另一个连接 运行 kill <id>
。
对于 Redshift,它是 select * from stv_recents where status='Running'
,您可以从那里获得 pid
在 Amazon Redshift 中,有几种方法可以确定 运行 查询 -
STV_INFLIGHT - 目前仅显示 运行 个查询 (http://docs.aws.amazon.com/redshift/latest/dg/r_STV_INFLIGHT.html)
select userid, usename, query, pid, starttime, "text",
suspended from stv_inflight s, pg_user u
where s.userid = u.usesysid
STV_RECENTS - 显示当前 运行 和最近完成的状态为 (http://docs.aws.amazon.com/redshift/latest/dg/r_STV_RECENTS.html)
的查询select * from stv_recents;
现在,要中止 运行 查询,您需要当前 运行 查询的 pid(进程 ID)。然后,您可以使用以下命令之一终止查询 -
select pg_cancel_backend(<pid>); OR
select pg_terminate_backend(<pid>) ; OR
cancel <pid>;
查询#2
select userid, usename, query, s.pid, c.remotehost, c.application_name,
starttime, "text",
suspended from stv_inflight s, stl_connection_log c, pg_user u
where s.userid = u.usesysid and s.pid = c.pid