2017-10-26 14 views
0

私はpsshのCLIコマンドラインを使ってRedshiftに問い合わせています。 (質問はmysqlにも当てはまります)。クエリの実行に時間がかかる場合があります。コマンドを送信した後、そのクエリのクエリIDはですが、完了するまで待つことなくが実行されていますか?これは可能ですか?例えばpsql/mysql CLIコマンドラインを実行した後にクエリIDを取得する方法は?

私はそのクエリの時間を中止する必要がある場合は、/日後、私はその特定のクエリの赤方偏移のバックエンドにCANCEL/ABORTコマンドを送信したいと思います。注:同じデータベースが他の人によって使用されるので、実行した特定のクエリのIDを知りたいと思います。

また、のは、psqlのコマンドは、シェルで実行されているとしましょう。アプリケーションでプログラムで(python)を実行して、そのpsql CLIプロセスからクエリIDを取得することはできますか? MySQLでは

+0

'psql'は、PostgreSQL、MySQLのではないで使用されて

select pg_cancel_backend(<pid>); OR select pg_terminate_backend(<pid>) ; OR cancel <pid>; 

クエリ# - あなたはその後、以下のいずれかのコマンドを使用してクエリを終了することができます。 – Barmar

+0

ありがとうございます。私はpsqlとmysqlの両方に適用するように改訂しました – codeshark

+0

これはあなたを方向づけることができますか? http://chrismiles.info/systemsadmin/databases/articles/viewing-current-postgresql-queries/ –

答えて

0

クエリを実行する前に、現在の接続の接続IDを取得するためにselect connection_id()を実行することができます。長期実行クエリを開始した後、別の接続からkill <id>を実行できます。

STV_INFLIGHT - - ショー

+0

ありがとう、psqlクエリの実行方法について教えてくださいCLI?長時間実行しているpsqlクエリをキャンセルすると便利です。 – codeshark

0

赤方偏移のために、それはselect * from stv_recents where status='Running'だとあなたが

+0

ありがとう私は、同じ時間に多くのユーザがクエリを作成していることが考えられます。私はそれが実行されている間に、クエリIDまたはクエリのプロセスidを特定することができるようにしたいと思います – codeshark

+0

クライアントの情報はそこに表示されていませんが、psql特定のユーザの下で接続されています – AlexYes

0

アマゾン赤方偏移でからpidを取得することができます、実行中のクエリを決定するために、いくつかの方法があります唯一、現在実行中のクエリ(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 - ショーが実行されているクエリを中止し、今

select * from stv_recents; 

を現在実行しているし、最近の状態(http://docs.aws.amazon.com/redshift/latest/dg/r_STV_RECENTS.html)でクエリを完了し、あなたは、現在実行中のクエリのPID(プロセスID)が必要です。 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 
+0

ありがとうございます。 psqlコマンドラインで実行されているクエリのクエリIDまたはクエリIDを取得する方法を知っていますか? – codeshark

+0

ありがとう私は、同じ時間に多くのユーザーがクエリを行うことができるという状況が起こっていると思います。私は、実行中にpsql CLIクエリを実行するクエリidまたはクエリのプロセスIDを一意に識別できるようにしたいと考えています。 – codeshark

+0

接続から 'application_name'を識別するための単純な方法はないと思います。 'stl_connection_log'テーブルにapplication_nameという名前の列がありますが、いつでもその列の値は見られませんでした。しかし、psql cliを実行するマシンのIPアドレスを知っているなら、クエリ#2を使ってそれらのマシンからセッションを識別することができます(上記に追加されています) –

関連する問題