tablas - ¿Cómo puedo habilitar el registro lento de consultas de MySQL sin reiniciar MySQL?
optimizar consultas mysql explain (8)
Creo que el problema es asegurarse de que el servidor MySQL tenga los derechos sobre el archivo y pueda editarlo.
Si puede lograr que tenga acceso al archivo, puede intentar configurarlo:
SET GLOBAL slow_query_log = 1;
De lo contrario, siempre puede volver a cargar el servidor después de cambiar el archivo de configuración. En Linux, por lo general, /etc/init.d/mysql reload
Seguí las instrucciones aquí: http://crazytoon.com/2007/07/23/mysql-changing-runtime-variables-with-out-restarting-mysql-server/ pero parece que solo establece el umbral.
¿Debo hacer algo más como configurar el archivo de ruta?
De acuerdo con los documentos de MySQL
If no file_name value is given for --log-slow-queries, the default name is host_name-slow.log. The server creates the file in the data directory unless an absolute path name is given to specify a different directory.
Corriendo
SHOW VARIABLES
no indica ninguna ruta de archivo de registro y no veo ningún archivo lento de registro de consultas en mi servidor ...
EDITAR
Parece que estoy usando la versión 5.0.77 del servidor, así que tenía que hacer:
SET GLOBAL log_slow_queries = 1;
pero obtengo: ERROR 1238 (HY000): la variable ''log_slow_queries'' es una variable de solo lectura
¿Supongo que voy a necesitar reiniciar el servidor y tener log_slow_queries establecido en mi configuración?
Esto debería funcionar en mysql> 5.5
MOSTRAR VARIABLES COMO ''% long%'';
SET GLOBAL long_query_time = 1;
Estos trabajos
SET GLOBAL LOG_SLOW_TIME = 1;
SET GLOBAL LOG_QUERIES_NOT_USING_INDEXES = ON;
Roto en mi configuración 5.1.42
SET GLOBAL LOG_SLOW_QUERIES = ON;
SET GLOBAL SLOW_QUERY_LOG = ON;
set @@global.log_slow_queries=1;
http://bugs.mysql.com/bug.php?id=32565
Parece que la mejor manera de hacerlo es establecer log_slow_time muy alto para "desactivar" el registro lento de consultas. Baje log_slow_time para habilitarlo. Use el mismo truco (configurado en OFF) para log_queries_not_using_indexes.
Para consultas lentas en la versión <5.1, la siguiente configuración funcionó para mí:
log_slow_queries=/var/log/mysql/slow-query.log
long_query_time=20
log_queries_not_using_indexes=YES
También tenga en cuenta para colocarlo en [mysqld]
parte del archivo de configuración y reiniciar mysqld
.
Si desea habilitar los registros de errores generales y el registro lento de errores de consulta
Para iniciar sesión en la tabla en lugar de archivo
mysql> set global log_output = "TABLE"; Para habilitar el registro de consultas general y lento
mysql> set global general_log = 1; mysql> set global slow_query_log = 1; Nombre de la tabla en la que el registro se realiza de forma predeterminada
mysql> select * from mysql.slow_log; mysql> select * from mysql.general_log; Para más detalles visita este enlace
Manual de MySQL - slow-query-log-file
Esto indica que puede ejecutar lo siguiente para configurar el archivo de registro lento (5.1.6 en adelante):
set global slow_query_log_file = ''path'';
La variable slow_query_log simplemente controla si está habilitada o no.
Buscar registro habilitado o no?
SHOW VARIABLES LIKE ''%log%'';
Establecer los registros: -
SET GLOBAL general_log = ''ON'';
SET GLOBAL slow_query_log = ''ON'';
Pruebe SET GLOBAL slow_query_log = ''ON'';
y tal vez FLUSH LOGS;
Esto supone que está utilizando MySQL 5.1 o posterior. Si está utilizando una versión anterior, deberá reiniciar el servidor. Esto está documentado en el Manual de MySQL . Puede configurar el registro en el archivo de configuración o en la línea de comando.