A menudo no utilizado pero más detallado
MOSTRAR LISTA DE PROCESOS COMPLETA
es útil, pero no tan bueno como el increíble analizador de consultas no empresarial : habilítelo
mysql> establecer perfiles = 1;
Consulta OK, 0 filas afectadas (0.00 seg)
Estas dos son consultas basura para llenar la tabla de perfiles,
mysql> select * from _test.customers;
ERROR 1146 (42S02): la tabla '_test.customers' no existe
mysql> select * from test.customers limit 0;
Conjunto vacío (0.00 seg)
Obtenga una lista de todas las consultas perfiladas y su duración
mysql> mostrar perfiles;
+ ---------- + ------------ + ------------------------- ------ +
El | Query_ID | Duración | Consulta |
+ ---------- + ------------ + ------------------------- ------ +
El | 1 | 0.00013400 | seleccione * de _test.customers |
El | 2 | 0,01546500 | seleccione * de test.customers |
+ ---------- + ------------ + ------------------------- ------ +
Mostrar información para la última consulta sería simplemente "mostrar perfil", o puede especificar una consulta
mysql> muestra el perfil para la consulta 2;
+ ---------------------- + ---------- +
El | Estado | Duración |
+ ---------------------- + ---------- +
El | comenzando | 0,000053 |
El | comprobación de permisos | 0,000007 |
El | Mesas de apertura | 0,000014 |
El | Bloqueo del sistema | 0,000006 |
El | Bloqueo de mesa | 0,000008 |
El | init | 0,000065 |
El | optimizando | 0,000003 |
El | ejecutando | 0,000201 |
El | fin | 0,000003 |
El | consulta final | 0,000002 |
El | artículos de liberación | 0,000020 |
El | consulta lenta de registro | 0,000002 |
El | limpieza | 0,000004 |
+ ---------------------- + ---------- +
13 filas en conjunto (0.00 seg)
También puede solicitar información específica como CPU, BLOCK IO y SWAPS entre otros ( todo en la página de manual )
mysql> muestra la CPU del perfil para la consulta 2;
+ ---------------------- + ---------- + ---------- + ---- -------- +
El | Estado | Duración | CPU_user | CPU_system |
+ ---------------------- + ---------- + ---------- + ---- -------- +
El | comenzando | 0,000056 | 0,001000 | 0,000000 |
El | comprobación de permisos | 0,000007 | 0,000000 | 0,000000 |
El | Mesas de apertura | 0,000010 | 0,000000 | 0,000000 |
El | Bloqueo del sistema | 0,000005 | 0,000000 | 0,000000 |
El | Bloqueo de mesa | 0,000007 | 0,000000 | 0,000000 |
El | init | 0,000059 | 0,000000 | 0,000000 |
El | optimizando | 0,000003 | 0,000000 | 0,000000 |
El | estadísticas | 0,015022 | 0,000000 | 0,000000 |
El | preparando | 0,000014 | 0,001000 | 0,000000 |
El | ejecutando | 0,000004 | 0,000000 | 0,000000 |
El | Enviando datos | 0,000245 | 0,000000 | 0,000000 |
El | fin | 0,000004 | 0,000000 | 0,000000 |
El | consulta final | 0,000002 | 0,000000 | 0,000000 |
El | artículos de liberación | 0,000021 | 0,000000 | 0,000000 |
El | consulta lenta de registro | 0,000002 | 0,000000 | 0,000000 |
El | limpieza | 0,000004 | 0,000000 | 0,000000 |
+ ---------------------- + ---------- + ---------- + ---- -------- +
16 filas en conjunto (0.00 seg)
No olvide deshabilitarlo después, ya que el registro agrega sobrecarga.
mysql> establecer perfiles = 0;
Consulta OK, 0 filas afectadas (0.00 seg)
Algunos comandos MySQL que no siempre son conocidos o recordados comúnmente.
Cambie la orientación del conjunto de resultados a vertical para facilitar la lectura y el pegado.
Cancele la consulta que está escribiendo actualmente mientras la deja en su historial.
Edite una consulta o la última consulta (respectivamente) con su $ EDITOR favorito.
Borre la salida de la consola.
Comparar conjuntos de resultados por hash MD5.
Cambia tu solicitud.
Busque en su historial de comandos una cadena determinada (como Bash).
Comience a escribir un término de búsqueda y repita ^ R para recorrer los resultados.
fuente
md5sum -
idea de usar como buscapersonas. No es realmente específico de MySQLTrucos que he aprendido que pueden ser útiles para algunos:
Para ejecutar el archivo que guardó anteriormente:
Utilizar "\!" para acceder a los comandos de shell. Por ejemplo:
Entonces, si desea escribir su declaración en un archivo (sin usar la opción de editor), puede ingresar:
Si entras
entonces tendrá sus declaraciones y resultados de consultas dirigidos / impresos al nombre de archivo que especificó. Use
\\t
para apagar esto.Termine una consulta con en
\\G
lugar de un ";" para mostrar la salida en un formato de fila en lugar de en columnas.No descarte usar una cláusula Where ... LIKE con la instrucción SHOW. Por ejemplo:
Por último, para encontrar la ubicación de su directorio de datos MySQL sin mirar el
my.cnf
uso del archivo:fuente
Personalmente me gusta el
SHOW
comandoPodría hacer
SHOW PROCESSLIST
: para ver todas las conexiones en ejecución a mysqlSHOW CREATE TABLE TableName
: para ver el sql utilizado para crear la tablaSHOW CREATE PROCEDURE ProcedureName
: para ver el sql utilizado para crear el SPSHOW VARIABLES
: para ver todas las variables del sistemaObtenga la lista completa aquí
fuente
Realmente documentado , pero muy molesto: conversiones de fechas automáticas para datos incorrectos.
A veces tendrá "suerte" cuando MySQL no ajuste la entrada a fechas válidas cercanas, sino que la almacene como
0000-00-00
que, por definición, no es válida. Sin embargo, incluso entonces podría haber querido que MySQL fallara en lugar de almacenar silenciosamente este valor por usted.fuente
Otra característica que diferencia a MySQL de otras bases de datos es el
REPLACE INTO
comando. Tu puedes hacer:También puede escribir la declaración de reemplazo al igual que escribe la declaración de actualización:
fuente
Realmente no es una característica oculta, pero es menos conocida y la uso mucho para guardar haciendo una consulta para verificar si existe algo antes de hacer una ACTUALIZACIÓN o INSERTAR
La documentación está aquí
fuente
Para ver el plan de ejecución de consultas use
EXPLAIN
p.ej
fuente
No está realmente oculto, pero el registro de consulta lenta puede ser realmente útil para rastrear la causa de los problemas de rendimiento en las horas punta.
En el archivo
my.cnf
, sección [mysqld] - agregue:fuente
Bueno, no puedo marcar esto como un duplicado ya que es un sitio diferente (y no tengo el representante aquí), pero solo voy a vincular a esta excelente publicación de stackoverflow para la misma pregunta :
fuente
Solo como una adición a la respuesta de pQD (como novato todavía no puedo agregar un comentario), si aún no ha agregado la ruta al registro de consulta lenta en el archivo my.cnf correcto, el registro de error será escrito en el directorio de datos (use SHOW VARIABLES LIKE 'datadir'; para averiguar dónde está) y el nombre del archivo estará en el formato [nombre del sistema] -slow.log
fuente