2008-09-24 13 views
8

Uso MySQL en un sitio web bastante complejo (dirigido por PHP).¿Existe una buena herramienta para MySQL que me ayude a optimizar mis consultas y configuración de índices?

Idealmente, habría una herramienta que podría usar que me ayudaría a probar las consultas SQL que estoy usando y sugerir mejores índices de tabla que mejorarán el rendimiento y evitarán escaneos de tablas.

De lo contrario, algo que me dirá exactamente lo que cada consulta es, para que pueda realizar la optimización de mí mismo.

Editar: una guía simple para entender la salida de EXPLAIN ... también sería útil.

Gracias.

Respuesta

18

OK, antes de mi respuesta, suscríbase al MySQL Performance Blog, aprendí mucho (y pensé que ya sabía mucho sobre MySQL). Además, tiene una página de herramientas de bitchin here.

segundo lugar, aquí hay algo de información sobre EXPLIQUE (referenciado desde el alto rendimiento de MySQL libro de O'Reilly):

al ejecutar un explique en una consulta, te dice todo lo que sabe acerca de MySQL consulta en el forma de informes para cada tabla involucrada en la consulta.

Cada uno de estos informes le dirá ...

  • el ID de la tabla (en la consulta)
  • el papel de la mesa en una selección más grande (en su caso, sólo podría decir SIMPLE si es sólo una mesa)
  • el nombre de la tabla (la)
  • el tipo de combinación (en su caso, por defecto const)
  • una lista de índices en la tabla (o NULL si ninguno), possible_keys
  • el nombre del índice que MySQL se decantó, clave
  • el tamaño del valor de la clave (en bytes)
  • ref muestra los cols o valores utilizados para que coincida contra la clave
  • filas es el número de filas que MySQL cree que necesita examinar para satisfacer la consulta. ¡Esto debe mantenerse lo más cercano posible a su mínimo calculado!
  • ... entonces cualquier información extra MySQL desea transmitir

El libro es totalmente impresionante a proporcionar este tipo de información, por lo que si no lo ha hecho, obtener su jefe para firmar en una compra.

De lo contrario, espero un poco más de conocimiento que el usuario pueda ayudar :)

3

Probablemente hay analizadores de consultas, pero para un primer corte simple en él use la línea de comando mysql, y escriba "explain select * from foo where bar = 'abc'". Asegúrese de que sus consultas más comunes usen índices, trate de evitar escaneos secuenciales o clases de tablas grandes.

+0

He tratado de explicar en el pasado, pero nunca realmente entiende la salida. He actualizado la pregunta para reflejar eso. –

1

Debe consultar Maatkit, que es un kit de herramientas de código abierto para realizar todo tipo de tareas de MySQL. Sin más información sobre lo que está intentando sintonizar, es difícil decirle qué herramientas usaría y cómo, pero la documentación es excelente y cubre muchas aplicaciones.

4

Lo más simple es habilitar el registro lento de consultas y ver qué consultas son lentas, luego intente analizarlas como se sugiere.

0

La herramienta que utilizo para el resto de mi pellizcar SQL (SQLyog) tiene una nueva versión que incluye un generador de perfiles, que es impresionante! (Yo no trabajo para ellos - sólo tiene que utilizar su producto)

enter image description here

http://www.webyog.com/en/screenshots_sqlyog.php

Cuestiones relacionadas