CANCEL - Amazon Redshift

CANCEL

Cancela una consulta de base de datos que está actualmente en ejecución.

El comando CANCEL requiere el ID de proceso o el ID de sesión de la consulta en ejecución y muestra un mensaje de confirmación para verificar que se canceló la consulta.

Privilegios necesarios

Los siguientes privilegios son necesarios para CANCEL:

  • Superusuario que cancela su propia consulta

  • Superusuario que cancela la consulta de un usuario

  • Usuarios con el privilegio CANCEL que cancelan la consulta de un usuario

  • Usuario que cancela su propia consulta

Sintaxis

CANCEL process_id [ 'message' ]

Parámetros

process_id

Para cancelar una consulta que se esté ejecutando en un clúster de Amazon Redshift, utilice el pid (ID de proceso) de STV_RECENTS que corresponda a la consulta que desee cancelar.

Para cancelar una consulta que se esté ejecutando en un grupo de trabajo de Amazon Redshift sin servidor, utilice el session_id de SYS_QUERY_HISTORY que corresponda a la consulta que desee cancelar.

'message'

Un mensaje de confirmación opcional que se muestra cuando se completa la cancelación de la consulta. Si no especifica un mensaje, Amazon Redshift mostrará el mensaje predeterminado como verificación. Debe incluir el mensaje entre comillas simples.

Notas de uso

No puede cancelar una consulta al especificar un query ID; debe especificar el process ID (PID) o Session ID de la consulta. Solo puede cancelar consultas que su usuario esté ejecutando actualmente. Los superusuarios pueden cancelar todas las consultas.

Si las consultas en varias sesiones mantienen bloqueos en la misma tabla, puede utilizar la función PG_TERMINATE_BACKEND para terminar una de las sesiones. Esta acción obliga a las transacciones en curso de la sesión terminada a eliminar todos los bloqueos y revertir la transacción. Consulte la tabla de sistema STV_LOCKS para ver los bloqueos actuales.

Después de determinados eventos internos, Amazon Redshift podría reiniciar una sesión activa y asignar un PID nuevo. Si el PID ha cambiado, es posible que reciba el siguiente mensaje de error.

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

Para buscar el nuevo PID, consulte la tabla del sistema STL_RESTARTED_SESSIONS y el filtro en la columna oldpid.

select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;

Ejemplos

Para cancelar una consulta que se esté ejecutando actualmente en un clúster de Amazon Redshift, primero recupere el ID de proceso para la consulta que desee cancelar. Para determinar los ID de proceso para todas las consultas en ejecución, escriba el siguiente 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);

Revise el texto de la consulta para determinar cuál es el ID de proceso (PID) que corresponde a la consulta que desea cancelar.

Escriba el siguiente comando para usar PID 802 para cancelar esa consulta:

cancel 802;

La sesión donde se estaba ejecutando la consulta muestra el siguiente mensaje:

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

donde 168 es el ID de consulta (no el ID de proceso utilizado para cancelar la consulta).

De manera opcional, puede especificar un mensaje de confirmación personalizado para mostrar en lugar del mensaje predeterminado. Para especificar un mensaje personalizado, incluya el mensaje entre comillas simples al final del comando CANCEL:

cancel 802 'Long-running query';

La sesión donde se estaba ejecutando la consulta muestra el siguiente mensaje:

ERROR: Long-running query