gpt4 book ai didi

mysql - 执行 psql/mysql CLI 命令行后如何获取查询 ID?

转载 作者:行者123 更新时间:2023-11-29 10:33:22 26 4
gpt4 key购买 nike

我正在使用 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

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

关于mysql - 执行 psql/mysql CLI 命令行后如何获取查询 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46964596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com