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
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:
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:
finished– La consulta se terminó correctamente.waiting– Esperando a que la consulta finalice después de enviarle una señal de terminación.- Los demás valores explican por qué la consulta no puede detenerse.
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
INSERTy losSELECT, y permitir que la cola de mutaciones termine de procesarse. - O cancelar manualmente algunas de estas mutaciones enviando un comando
KILL.
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:
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.