Abro el administrador de tareas del servidor y descubro que el proceso de la CPU siempre ha sido del 99%, y la vista está ocupada por el proceso mysql, que ha estado alto.
La salida del comando de lista de procesos muestra qué hilos están en ejecución, y puedes comprobar el estado actual de ejecución de la base de datos.
1. Ir al directorio mysql/bin e introducir mysqladmin proceslist; 2. Inicia mysql e introduce la lista de procesos de mostrar (ver la lista de procesos). Si tienes el permiso SUPER, puedes ver todos los hilos, si no, solo puedes ver los hilos de tu cuenta.
El significado y propósito de cada columna
id: Un identificador user: muestra el usuario actual, si no es root, este comando solo mostrará sentencias SQL dentro de tus permisos. host: muestra de qué IP proviene esta sentencia de qué puerto db: Muestra la base de datos a la que está conectado actualmente el proceso. comando: Muestra los comandos ejecutados por la conexión actual, normalmente suspensión de la línea, consulta y conexión. tiempo: El tiempo que dura este estado en segundos. estado: Muestra el estado de la instrucción sql que utiliza la conexión actual, pero solo se ha consultado un estado determinado en la ejecución de la sentencia, una sentencia sql, por ejemplo, puede necesitar pasar por la copia a la tabla tmp, resultado de ordenamiento, envío de datos, etc info: Muestra esta sentencia SQL, porque la longitud es limitada, por lo que la sentencia SQL larga no se muestra completamente, pero es una base importante para juzgar la sentencia del problema.
Se descubre que hay dos sentencias de consulta SQL que tardan más tiempo y no se han ejecutado en más de 1000 segundos, y las sentencias SQL que copiamos del campo info son una consulta conjunta, como sigue:
selecciona cast(count(*) como SIGNED) como col_0_0_ de 'RatedPassenger' ratedpasse0_, 'BaseInfoCompany' baseinfoco1_, 'OrderMatch' ordermatch2_ donde baseinfoco1_. CompanyId=ratedpasse0_. Identificación de la empresa y ordermatch2_. OrderId=ratedpasse0_. OrderId Eliminamos el proceso de estas dos sentencias de consulta
Después de esperar 10 segundos, descubrí que la CPU había bajado mucho, pero seguía siendo muy alta, ¡y seguiré preguntando la razón!
Para la instrucción de consulta conjunta de unión, añade un índice al campo asociado o modifica el código de consulta del programa. Crear una sentencia SQL de índice
Fin
|