CANCEL - Amazon Redshift

CANCEL

Cancela uma consulta de banco de dados que está sendo executada no momento.

O comando CANCEL requer o ID do processo ou o ID da sessão da consulta que está sendo executada e exibe uma mensagem de confirmação para confirmar que a consulta foi cancelada.

Privilégios obrigatórios

A seguir estão os privilégios obrigatórios para CANCEL:

  • Superusuário que cancele sua própria consulta

  • Superusuário que cancele a consulta de um usuário

  • Usuários com o privilégio CANCEL que cancelem a consulta de um usuário

  • Usuário que cancele sua própria consulta

Sintaxe

CANCEL process_id [ 'message' ]

Parâmetros

process_id

Para cancelar uma consulta em execução em um cluster do Amazon Redshift, use o pid (ID do processo) de STV_RECENTS que corresponde à consulta a ser cancelada.

Para cancelar uma consulta em execução em um grupo de trabalho do Amazon Redshift sem servidor, use o session_id de SYS_QUERY_HISTORY que corresponde à consulta a ser cancelada.

'mensagem'

Mensagem de confirmação opcional exibida quando o cancelamento da consulta é concluído. Se você não especificar uma mensagem, o Amazon Redshift exibirá a mensagem padrão como verificação. Você deve colocar a mensagem entre aspas simples.

Observações de uso

Não é possível cancelar uma consulta especificando um ID de consulta; é necessário especificar o ID de processo (PID) ou o ID da sessão da consulta. Somente é possível cancelar consultas atualmente em execução pelo seu usuário. Superusuários podem cancelar todas as consultas.

Se as consultas em várias sessões mantiverem bloqueios na mesma tabela, você poderá usar a função PG_TERMINATE_BACKEND para encerrar uma das sessões. Isso força todas as transações em execução na sessão encerrada a liberar todos os bloqueios e reverter a transação. Consulte a tabela de sistema STV_LOCKS para exibir os bloqueios atuais.

Depois de alguns eventos internos, o Amazon Redshift pode reiniciar uma sessão ativa e atribuir um novo PID. Se o PID foi alterado, a seguinte mensagem de erro pode aparecer.

Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.

Para encontrar o PID, consulte a tabela de sistema STL_RESTARTED_SESSIONS e o filtro na coluna oldpid.

select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;

Exemplos

Para cancelar uma consulta em execução em um cluster do Amazon Redshift, recupere primeiro o ID de processo para a consulta a ser cancelada. Para determinar os IDs de processo para todas as consultas atualmente em execução, digite o seguinte comando:

select pid, starttime, duration, trim(user_name) as user, trim (query) as querytxt from stv_recents where status = 'Running'; pid | starttime | duration | user | querytxt -----+----------------------------+----------+----------+----------------- 802 | 2008-10-14 09:19:03.550885 | 132 | dwuser | select venuename from venue where venuestate='FL', where venuecity not in ('Miami' , 'Orlando'); 834 | 2008-10-14 08:33:49.473585 | 1250414 | dwuser | select * from listing; 964 | 2008-10-14 08:30:43.290527 | 326179 | dwuser | select sellerid from sales where qtysold in (8, 10);

Verifique o texto da consulta para determinar qual ID de processo (PID) corresponde à consulta que você deseja cancelar.

Digite o seguinte comando a ser usado com o PID 802 para cancelar a consulta:

cancel 802;

A sessão em que a consulta estava sendo executada exibirá a seguinte mensagem:

ERROR: Query (168) cancelled on user's request

onde 168 é o ID de consulta (não o ID de processo usado para cancelar a consulta).

Como alternativa, você pode especificar uma mensagem de confirmação personalizada a ser exibida no lugar da mensagem padrão. Para especificar uma mensagem personalizada, inclua sua mensagem entre aspas simples no final do comando CANCEL:

cancel 802 'Long-running query';

A sessão em que a consulta estava sendo executada exibirá a seguinte mensagem:

ERROR: Long-running query