variable valor una procesos guardar eliminar comando java mysql applet-servlet

java - valor - eliminar procesos sleep mysql



Cómo detener una consulta mysql en ejecución (3)

¿Cómo detengo programáticamente una consulta mysql en ejecución?

El problema al que me enfrento es que una consulta se construye con los datos proporcionados por el usuario y, en ocasiones, puede tardar mucho tiempo en ejecutarse (tablas grandes de 15 a 30 millones de filas). Quiero ofrecerle al usuario una opción de cancelación, pero no sé cómo detener la consulta mysql que se está ejecutando actualmente.

La aplicación es un applet-servlet de Java: el usuario especifica los criterios en el applet que se pasa al servlet donde se crea una clase de controlador para manejar la solicitud. Esta clase de controlador es autocontenida: re connect - query - desconecte a mysql.

Dado este escenario, ¿cómo cancelo una consulta mysql en ejecución?


Puede emitir comandos específicos de MySQL a través de las bibliotecas estándar proporcionadas por MySQL y ejecutar KILL QUERY . Posiblemente es mejor enumerar los procesos y determinar qué hilo debe matar primero.

Sin embargo, dependiendo de su aplicación, esto podría crear un problema de seguridad (ya que necesita otorgar más privilegios al usuario que se conecta).


Se requiere una conexión JDBC separada, lo que significa que tendrá que crear una nueva instancia de controlador de base de datos. Ejecute la instrucción SHOW PROCESSLIST y luego haga un ciclo a través de los resultados y ejecute una instrucción KILL para cada ID de hilo encontrada para el usuario dado.

La única forma confiable en que puedo pensar para hacer esto es que cada usuario tendría que iniciar sesión en la base de datos con un nombre de usuario diferente, luego obtener todos los ID de subproceso para ese usuario y eliminar todos sus subprocesos.