2017-10-26 26 views
0

pssh CLI 명령 줄을 사용하여 Redshift에 대한 쿼리를 만들고 있습니다. (질문은 mysql에도 적용된다). 쿼리를 실행하는 데 시간이 오래 걸릴 수 있습니다. 명령을 보낸 후 해당 쿼리의 쿼리 ID를 으로 가져올 수 있으며 완료 될 때까지 대기하지 않고이 실행 중입니다. 이것이 가능한가?psql/mysql CLI 명령 행을 실행 한 후 쿼리 ID를 얻는 방법은 무엇입니까?

예를 들어 시간대/일 후에 해당 쿼리를 중단해야하는 경우 특정 쿼리에 대한 Redshift 백엔드에 CANCEL/ABORT 명령을 보내고 싶습니다. 참고 : 다른 사용자가 동일한 데이터베이스를 사용하므로 실행 한 특정 쿼리의 ID를 알고 싶습니다.

또한 psql 명령이 셸에서 실행되고 있다고 가정 해 보겠습니다. 해당 응용 프로그램에서 프로그래밍 방식으로 (python) 해당 psql CLI 프로세스에서 Query ID를 가져올 수 있습니까?

+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

mysql에서 select connection_id()을 실행하면 쿼리를 실행하기 전에 현재 연결의 연결 ID를 얻을 수 있습니다. 장기 실행 쿼리를 시작한 후 다른 연결에서 kill <id>을 실행할 수 있습니다.

STV_INFLIGHT - - 쇼

+0

감사합니다. psql 쿼리에 대해이 작업을 수행하는 방법을 알고 계십니까? CLI가요? 장기간 실행되는 psql 쿼리를 취소하는 것이 유용 할 것입니다. – codeshark

0

Redshift에 들어,이 select * from stv_recents where status='Running' 그리고 당신이

+0

고마워요. 같은 시간에 쿼리를 만드는 많은 사용자가있을 수 있습니다. 내가 고유하게 쿼리 id를 식별 할 수있게하거나 실행중인 psql CLI 쿼리를 실행하는 쿼리 ID를 묻습니다. – codeshark

+0

클라이언트 정보가 거기에 표시되지 않습니다.하지만 원하는 경우 사용자 ID로 필터링 할 수 있습니다. psql 특정 사용자가 연결되어 있습니다 – AlexYes

0

아마존 Redshift에에서에서 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

고마워. 나는 같은 시간에 검색어를 만드는 많은 사용자가있을 수 있다고 생각한다.나는 쿼리 ID를 확인하거나 실행중인 동안 psql CLI 쿼리를 실행하는 프로세스 ID를 쿼리 할 수있게하고 싶습니다. – codeshark

+0

연결에서 'application_name'을 식별하는 간단한 방법이 있다고는 생각하지 않습니다. 'stl_connection_log'테이블에 application_name이라는 열이 있지만 언제든지 해당 열의 값을 보지 못했습니다 (내부 용으로 만있을 수 있음). 그러나 psql cli가 실행되어야하는 머신의 IP 주소를 알고 있다면, 쿼리 # 2를 사용하여 해당 머신의 세션을 식별 할 수 있습니다 (지금 추가됨) –