2008-09-18 45 views

Respuesta

18

recomiendo estas tres líneas

 
log_slow_queries 
set-variable = long_query_time=1 
log-queries-not-using-indexes 

La primera y segunda almacenará los mensajes de consulta más de un segundo. Como otros han señalado, una consulta de un segundo ha quedado muy atrás si usted está buscando una alta tasa de transacción en su sitio web, pero creo que presenta algunas WTF reales; las consultas que deberían ser ser rápidas, pero para cualquier combinación de datos con las que se ejecutó no fue.

El último registrará cualquier consulta que no utilice un índice. A menos que haga depósitos de datos en una consulta común, debe tener el mejor índice que pueda encontrar, así que preste atención a su resultado.

Aunque es ciertamente no para la producción, esta última opción

 
log = /var/log/mysql/mysql.log 

registrará todas las consultas, que puede ser útil si usted está tratando de optimizar una página o acción específica.

+0

No sabía acerca de las log-queries-not-using-indexes, gracias! – Subimage

4

Cualquiera que sea el tiempo/usted/sentido es inaceptablemente lento para una consulta en sus sistemas.

Depende del tipo de consultas que ejecute y del tipo de sistema; una consulta que toma varios segundos puede no importar si se trata de algún sistema de informes de back-end que hace minería de datos compleja, etc. donde un retraso no importa, pero podría ser completamente inaceptable en un sistema orientado al usuario que se espera que devuelva resultados rápidamente.

3

Ajústelo a su gusto. El único problema es que en un stock MySQL, solo se puede configurar en incrementos de 1 segundo, lo que es demasiado lento para algunas personas.

Los servidores de producción más utilizados ejecutan demasiadas consultas para registrarlas todas. El registro lento es una forma de filtrar el registro para que podamos ver los que tardan mucho tiempo (es probable que la mayoría de las consultas se ejecuten casi instantáneamente). Es un poco un instrumento contundente.

Ajústelo a 1 segundo si lo desea, probablemente no se quede sin espacio en disco o cree un problema de rendimiento al hacerlo.

Realmente se trata del riesgo de habilitar el registro lento; no lo haga si cree que es probable que cause más problemas de disco o de rendimiento.

Por supuesto, puede activar el registro lento en un servidor que no es de producción y realizar la carga simulada, pero eso nunca es lo mismo.

+0

ahora puede establecerlo en microsegundos. – phirschybar

1

No solo es un instrumento contundente en lo que respecta a la resolución, sino que también es una instancia de MySQL amplia, por lo que si tiene diferentes bases de datos con diferentes requisitos de rendimiento, no tiene suerte. Obviamente, hay formas de evitarlo, pero es importante tenerlo en cuenta al establecer la configuración de registro lento.

Además de los requisitos de rendimiento de su aplicación, otro factor a considerar es lo que está intentando iniciar sesión. ¿Está utilizando el registro para detectar consultas que podrían amenazar la estabilidad de su instancia de db (por ejemplo, las que provocan bloqueos o uniones cartesianas) o consultas que afectan el rendimiento de usuarios específicos y que podrían requerir un poco de ajuste? Eso influenciará dónde estableces tu umbral.

3

Peter Zaitsev publicó un nice article sobre el uso del registro lento de consultas.Una cosa que él señala es importante es también considerar la frecuencia con que se usa una determinada consulta. Los informes que se ejecutan una vez al día no son importantes para ser rápidos. Pero algo que se ejecuta muy a menudo puede ser un problema incluso si lleva medio segundo. Y no puedes detectar eso sin el parche microslow.