cod*_*ark 1 mysql sql singlestore psql amazon-redshift
我正在使用 psql CLI 命令行对 Redshift 进行查询。(问题也适用于 mysql)。该查询可能需要很长时间才能执行。发送命令后,是否可以在查询运行时获取该查询的查询 ID,而无需等到其完成。这可能吗?
例如,如果我需要在几小时/几天后中止该查询,我想向该特定查询的 Redshift 后端发送 CANCEL/ABORT 命令。注意:同一个数据库将被其他人使用,所以我想知道我执行的特定查询的ID。
另外,假设 psql 命令在 shell 中运行。是否可以在应用程序中以编程方式(python)从 psql CLI 进程获取查询 ID?
在 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
Run Code Online (Sandbox Code Playgroud)
STV_RECENTS - 显示当前正在运行和最近完成的查询及其状态 ( http://docs.aws.amazon.com/redshift/latest/dg/r_STV_RECENTS.html )
select * from stv_recents;
Run Code Online (Sandbox Code Playgroud)
现在,要中止正在运行的查询,您需要当前正在运行的查询的pid (进程 ID)。然后,您可以使用以下命令之一终止查询 -
select pg_cancel_backend(<pid>); OR
select pg_terminate_backend(<pid>) ; OR
cancel <pid>;
Run Code Online (Sandbox Code Playgroud)
查询#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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2662 次 |
| 最近记录: |