15 votos

Funciones ocultas de MySQL

En la larga tradición de tener características ocultas, supongamos que tenemos una lista de características ocultas en MySQL.

No poner una de las características por respuesta.

Vea También:
Características ocultas de Linux
Características ocultas de PowerShell
Características ocultas de la Base de datos de Oracle
Funciones ocultas de Windows 2008
Características ocultas de Solaris/OpenSolaris
Oculto de las Características de SQL Server
Características ocultas de IIS 6.0 / 7.0)

9voto

Andy Puntos 4237

A menudo no utilizados, pero más detallado

SHOW PROCESSLIST COMPLETO

es útil, pero no tan bueno como el impresionante que no sean de empresa analizador de consultas a habilitar como así

 mysql> set de perfiles=1;
 Query OK, 0 rows affected (0.00 sec)

Estos dos son basura, las consultas a llenar los perfiles de la tabla,

 mysql> select * from _test.los clientes;
 ERROR 1146 (42S02): Tabla '_test.los clientes' no existe

 mysql> select * from prueba.los clientes de límite 0;
 Empty set (0.00 sec)
 

Obtener una lista de todas las consultas perfilada y su duración

 mysql> show perfiles;
+----------+------------+-------------------------------+
 | Query_ID | Duración | Consulta |
+----------+------------+-------------------------------+
 | 1 | 0.00013400 | select * from _test.clientes |
 | 2 | 0.01546500 | select * from prueba.clientes |
+----------+------------+-------------------------------+

Mostrar información de última consulta sería sólo "mostrar perfil" - o puede especificar una consulta

 mysql> show perfil para la consulta 2;
+----------------------+----------+
 | Situación | Duración |
+----------------------+----------+
 | inicio | 0.000053 |
 | comprobación de permisos | 0.000007 |
 | Apertura | tablas de 0.000014 |
 | Sistema de bloqueo | 0.000006 |
 | Bloqueo de tabla | 0.000008 |
 | init | 0.000065 |
 | optimización | 0.000003 |
 de ejecución | | 0.000201 |
 | final | 0.000003 |
 | fin de la consulta | 0.000002 |
 | liberar elementos | 0.000020 |
 | registro de consultas lentas | 0.000002 |
 | limpieza | 0.000004 |
+----------------------+----------+
 13 filas en set (0.00 sec)

También puede solicitar información específica, tales como CPU, BLOQUE de e / s y los SWAPS, entre otros (todos en el hombre de la página)

 mysql> show perfil de la cpu para la consulta 2;
+----------------------+----------+----------+------------+
 | Situación | Duración | CPU_user | CPU_system |
+----------------------+----------+----------+------------+
 | inicio | 0.000056 | 0.001000 | 0.000000 |
 | comprobación de permisos | 0.000007 | 0.000000 | 0.000000 |
 | Apertura | tablas de 0.000010 | 0.000000 | 0.000000 |
 | Sistema de bloqueo | 0.000005 | 0.000000 | 0.000000 |
 | Bloqueo de tabla | 0.000007 | 0.000000 | 0.000000 |
 | init | 0.000059 | 0.000000 | 0.000000 |
 | optimización | 0.000003 | 0.000000 | 0.000000 |
 | estadísticas | 0.015022 | 0.000000 | 0.000000 |
 | preparación | 0.000014 | 0.001000 | 0.000000 |
 de ejecución | | 0.000004 | 0.000000 | 0.000000 |
 | Envío de datos | 0.000245 | 0.000000 | 0.000000 |
 | final | 0.000004 | 0.000000 | 0.000000 |
 | fin de la consulta | 0.000002 | 0.000000 | 0.000000 |
 | liberar elementos | 0.000021 | 0.000000 | 0.000000 |
 | registro de consultas lentas | 0.000002 | 0.000000 | 0.000000 |
 | limpieza | 0.000004 | 0.000000 | 0.000000 |
+----------------------+----------+----------+------------+
 16 filas en set (0.00 sec)

No olvide desactivar después, como el registro aumenta la sobrecarga.

 mysql> set de perfiles=0;
 Query OK, 0 rows affected (0.00 sec)

8voto

Dan Carley Puntos 17278

Algunos comandos de MySQL que no siempre son comúnmente conocido o recordado.

Cambiar el conjunto de resultados de la orientación a vertical para facilitar la lectura y pegar.

mysql> SELECT CURDATE(), CURTIME()\G
*************************** 1. row ***************************
CURDATE(): 2009-06-26
CURTIME(): 12:10:37

Cancelar la consulta actualmente está escribiendo, dejando en su historia.

mysql> SELECT CURDATE(), CURTIME()\c
mysql>

Edición de una consulta o de la última consulta (respectivamente) con su favorito $EDITOR.

mysql> SELECT CURDATE(), CURTIME()\e
mysql> \e

Claro que la salida de la consola.

mysql> \! clear

Resultado de comparar los conjuntos de hash MD5.

mysql> pager md5sum -
PAGER set to 'md5sum -'
mysql> SELECT CURDATE(), CURTIME();
d24e22e4e2d33dfda9f01ba934b7676a  -
mysql> nopager
PAGER set to stdout

El cambio de su sistema.

mysql> prompt (\u@\h) [\d]>\_
PROMPT set to '(\u@\h) [\d]>\_'
(dan@localhost) [test]>

La búsqueda de su historial de comandos para una cadena dada (como Bash).
Empezar a escribir un término de búsqueda y repetir ^R para desplazarse a través de los resultados.

^R
(reverse-i-search)`DATE': SELECT CURDATE(), CURTIME();

3voto

Binoj Antony Puntos 207

Personalmente, me gusta la SHOW comando

Usted podría hacer
SHOW PROCESSLIST - Para ver todo el funcionamiento de las conexiones a mysql
SHOW CREATE TABLE TableName - Para ver el sql utilizado para crear la tabla
SHOW CREATE PROCEDURE ProcedureName - Para ver el sql se utiliza para crear el SP
SHOW VARIABLES - Para ver todas las variables del sistema


Obtener la lista completa aquí

3voto

Arjan Puntos 354

En realidad documentada, pero muy molesto: automático de fecha a las conversiones de datos incorrectos.

Antes de MySQL 5.0.2, MySQL es perdonador de ilegal o indebido de los datos de los valores y coacciona a los valores legales para la entrada de datos. En MySQL 5.0.2 y de seguridad, que sigue siendo el comportamiento por defecto, pero usted puede cambiar el servidor SQL de modo para seleccionar más tradicionales de tratamiento de la mala valores tales que el servidor rechaza y anula la declaración en que se producen.

A veces será "suerte" cuando MySQL no ajuste la entrada a las cercanas fechas válidas, sino que la almacena como 0000-00-00 , el cual por definición no es válida. Sin embargo, incluso entonces usted podría tener que quería MySQL a fallar, en lugar de en silencio almacenar este valor para usted.

-3voto

DBMarcos99 Puntos 36

Trucos que he aprendido que puede ser de utilidad para algunos:

Para ejecutar el archivo que has guardado anteriormente:

source filename      # Alternatively you can enter "\\. filename".

Usar "\!" para acceder a comandos de la shell. Por ejemplo:

\\! ls c*sql   # To list all your SQL files in directory starting with "c".

Así que si usted quería escribir su declaración a un archivo (sin utilizar la opción del editor) se puede escribir:

\\! echo 'select * from emp where job ="salesman" '   > test2.sql   # Editor option seems easier to me though!

Si usted entrar

\\T filename

a continuación, tendrá su declaraciones y resultados de la consulta dirigido/impreso en el filemame especificado. Uso \\t de desactivar esta opción.

Terminar una consulta con \\G en lugar de un ";" con el fin de mostrar la salida en un formato de fila en lugar de en las columnas.

No se descarta el uso de un Donde...COMO cláusula con la presentación de la declaración. Por ejemplo:

SHOW STATUS LIKE '%cache%';

Por último, para encontrar la ubicación de su directorio de datos de MySQL, sin mirar el my.cnf el uso de archivos:

SHOW VARIABLES LIKE 'datadir';

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: