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 comando CANCEL 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 privilegio CANCEL che annulla la query 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.

Seguendo determinati eventi interni, Amazon Redshift può riavviare una sessione attiva e assegnare un nuovo PID. Se il PID è cambiato, è possibile che venga ricevuto 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 nuovo PID, eseguire una query sulla tabella di sistema STL_RESTARTED_SESSIONS e filtrare la colonna oldpid.

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 gli ID processo di 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);

Controlla il testo della query per determinare quale ID processo (PID) corrisponde alla query che vuoi annullare.

Digita il seguente comando per utilizzare PID 802 per annullare quella 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 comando CANCEL:

cancel 802 'Long-running query';

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

ERROR: Long-running query