CANCEL - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CANCEL

Annulla una query del database attualmente in esecuzione.

Il CANCEL comando richiede l'ID di processo o l'ID di sessione della query in esecuzione e visualizza un messaggio di conferma per verificare che la query sia stata annullata.

Privilegi richiesti

Di seguito sono riportati i privilegi richiesti per: CANCEL

  • Utente con privilegi avanzati che annulla la propria query

  • Utente con privilegi avanzati che annulla la query di un utente

  • Utenti con il CANCEL privilegio di annullare la richiesta di un utente

  • Utente che annulla la propria query

Sintassi

CANCEL process_id [ 'message' ]

Parametri

process_id

Per annullare una query in esecuzione in un cluster Amazon Redshift, utilizza il pid (Process ID) corrispondente alla query che desideri annullare. STV_RECENTS

Per annullare una query in esecuzione in un gruppo di lavoro Serverless Amazon Redshift, utilizza il session_id modulo SYS_QUERY_HISTORY corrispondente alla query che desideri annullare.

'message'

Messaggio di conferma facoltativo che viene visualizzato al termine dell'annullamento della query. Se non si specifica un messaggio, Amazon Redshift visualizza il messaggio predefinito come verifica. È necessario racchiudere il messaggio tra virgolette singole.

Note per l'utilizzo

Non è possibile annullare una query specificando un ID di query; è necessario specificare l'ID di processo (PID) o l'ID di sessione della query. Puoi annullare solo le query attualmente eseguite dall'utente. Gli utenti con privilegi avanzati possono annullare tutte le query.

Se le query in più sessioni contengono blocchi sulla stessa tabella, è possibile utilizzare la funzione PG_ _ TERMINATE BACKEND per terminare una delle sessioni. Questa operazione forza qualsiasi transazione attualmente in esecuzione nella sessione terminata al fine di rilasciare tutti i blocchi ed eseguire il rollback della transazione. Per visualizzare i blocchi correnti, eseguire una query sulla tabella di sistema STV_LOCKS.

In seguito a determinati eventi interni, Amazon Redshift potrebbe riavviare una sessione attiva e assegnarne una nuova. PID Se PID è cambiato, potresti ricevere il seguente messaggio di errore.

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

Per trovare il nuovoPID, interroga la tabella di STL_RESTARTED_SESSIONS sistema e filtra sulla oldpid colonna.

select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;

Esempi

Per annullare una query attualmente in esecuzione in un cluster Amazon Redshift, recupera innanzitutto l'ID del processo per la query che desideri annullare. Per determinare il processo IDs per tutte le query attualmente in esecuzione, digita il seguente 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);

Controllate il testo della query per determinare quale processo id (PID) corrisponde alla query che desiderate annullare.

Digitate il comando seguente per utilizzare PID 802 per annullare la query:

cancel 802;

La sessione in cui è stata eseguita la query visualizza il seguente messaggio:

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

dove 168 è l'ID query (non l'ID processo utilizzato per annullare la query).

In alternativa, puoi specificare un messaggio di conferma personalizzato da visualizzare al posto del messaggio predefinito. Per specificare un messaggio personalizzato, includi il messaggio tra virgolette singole alla fine del CANCEL comando:

cancel 802 'Long-running query';

La sessione in cui è stata eseguita la query visualizza il seguente messaggio:

ERROR: Long-running query