Skip to main content
Esta página describe las sentencias KILL QUERY y KILL MUTATION. De forma predeterminada, si no hay coincidencias, la sentencia finaliza sin lanzar ninguna excepción. Para que KILL QUERY lance una excepción cuando su expresión WHERE no deja filas elegibles en system.processes tras excluir la propia sentencia KILL, y para que KILL MUTATION lance una excepción cuando su expresión WHERE no coincide con ninguna fila de system.mutations, establezca kill_throw_if_noop en true. La ejecución con ON CLUSTER no lanza excepciones cuando no hay coincidencias, ya que los resultados de las coincidencias no se agregan entre los hosts.

KILL QUERY

Intenta finalizar por la fuerza las consultas que se están ejecutando actualmente. Las consultas que se van a finalizar se seleccionan de la tabla system.processes mediante los criterios definidos en la cláusula WHERE de la consulta KILL. Ejemplos: Primero, tendrás que obtener la lista de consultas incompletas. Esta consulta SQL las muestra empezando por las que llevan más tiempo en ejecución: Lista de un solo nodo de ClickHouse:
Listado de un clúster de ClickHouse:
Cancele la consulta:
Si está terminando una consulta en ClickHouse Cloud o en un clúster autogestionado, asegúrese de usar la opción ON CLUSTER [cluster-name] para garantizar que la consulta se termine en todas las réplicas.
Los usuarios de solo lectura solo pueden detener sus propias consultas. Un usuario al que no se le ha concedido SELECT sobre system.processes aún puede cancelar su propia consulta especificando su identificador: KILL QUERY WHERE query_id = '<id>'. Para un usuario que no tiene ni ese permiso ni KILL QUERY, un id que no se esté ejecutando con su identidad no cancela nada y no devuelve filas, en lugar de notificar un error, a menos que kill_throw_if_noop esté habilitado, en cuyo caso la operación sin efecto se notifica como una excepción; a un usuario que tiene KILL QUERY pero no ese SELECT se le deniega la operación por carecer del SELECT. Cualquier otra condición WHERE, así como ON CLUSTER, siguen requiriendo los permisos descritos anteriormente. De forma predeterminada, se usa la versión asíncrona de las consultas (ASYNC), que no espera la confirmación de que las consultas se hayan detenido. La versión síncrona (SYNC) espera a que todas las consultas se detengan y muestra información sobre cada proceso a medida que se detiene. La respuesta contiene la columna kill_status, que puede tomar los siguientes valores:
  1. finished – La consulta se terminó correctamente.
  2. waiting – Esperando a que la consulta finalice después de enviarle una señal de terminación.
  3. Los demás valores explican por qué la consulta no puede detenerse.
Una consulta de prueba (TEST) solo comprueba los permisos del usuario y muestra una lista de las consultas que se van a detener.

KILL MUTATION

La presencia de mutaciones de larga duración o incompletas suele indicar que un servicio de ClickHouse funciona mal. La naturaleza asíncrona de las mutaciones puede hacer que consuman todos los recursos disponibles del sistema. Puede que necesite hacer una de estas dos cosas:
  • Pausar todas las mutaciones nuevas, los INSERT y los SELECT, y permitir que la cola de mutaciones termine de procesarse.
  • O cancelar manualmente algunas de estas mutaciones enviando un comando KILL.
Intenta cancelar y eliminar las mutaciones que se están ejecutando en ese momento. Las mutaciones que se van a cancelar se seleccionan de la tabla system.mutations mediante el filtro especificado en la cláusula WHERE de la consulta KILL. Una consulta de prueba (TEST) solo verifica los permisos del usuario y muestra una lista de mutaciones que se deben detener. Ejemplos: Obtener un count() del número de mutaciones incompletas: Cantidad de mutaciones de un único nodo de ClickHouse:
Número de mutaciones de un clúster de réplicas de ClickHouse:
Consulta la lista de mutaciones incompletas: Lista de mutaciones de un solo nodo de ClickHouse:
Lista de mutaciones de un clúster de ClickHouse:
Cancele las mutaciones según sea necesario:
La consulta es útil cuando una mutación está bloqueada y no puede finalizar (p. ej., si alguna función de la consulta de mutación lanza una excepción al aplicarse a los datos contenidos en la tabla). Los cambios ya realizados por la mutación no se revierten.
La columna is_killed=1 (solo ClickHouse Cloud) de la tabla system.mutations no significa necesariamente que la mutación haya finalizado por completo. Es posible que una mutación permanezca durante un período prolongado en un estado en el que is_killed=1 e is_done=0. Esto puede ocurrir si otra mutación de larga duración está bloqueando la mutación cancelada. Esta es una situación normal.