sql >> Base de Datos >  >> RDS >> Mysql

Mejores prácticas de optimización de bases de datos MySQL

La "mejor práctica" es:

  1. Mida el rendimiento, aislando el subsistema relevante lo mejor que pueda.
  2. Identifique la causa raíz del cuello de botella. ¿Está vinculado a E/S? CPU enlazado? ¿Límite de memoria? ¿Esperando en las cerraduras?
  3. Haga cambios para aliviar la causa raíz que descubrió.
  4. Mide de nuevo, para demostrar que solucionaste el cuello de botella y cuánto .
  5. Vaya al paso 2 y repita según sea necesario hasta que el sistema funcione lo suficientemente rápido.

Suscríbase a la fuente RSS en http://www.mysqlperformanceblog.com y lea también sus artículos históricos. Ese es un recurso muy útil para la sabiduría relacionada con el rendimiento. Por ejemplo, preguntó acerca de InnoDB frente a MyISAM. Su conclusión:InnoDB tiene un rendimiento un 30 % más alto que MyISAM en promedio. Aunque también hay algunos escenarios de uso en los que MyISAM supera a InnoDB.

Los autores de ese blog también son coautores de "High Performance MySQL", el libro mencionado por @Andrew Barnett.

Re comentario de @ʞɔıu:cómo saber si está vinculado a E / S versus vinculado a CPU versus limitado a memoria depende de la plataforma. El sistema operativo puede ofrecer herramientas como ps, iostat, vmstat o top. O es posible que deba obtener una herramienta de terceros si su sistema operativo no proporciona una.

Básicamente, cualquier recurso que esté vinculado al 100 % de utilización/saturación probablemente sea su cuello de botella. Si la carga de su CPU es baja pero su carga de E/S es máxima para su hardware, entonces está limitado a E/S.

Sin embargo, ese es solo un punto de datos. El remedio también puede depender de otros factores. Por ejemplo, una consulta SQL compleja puede estar ordenando un archivo y esto mantiene ocupada la E/S. ¿Debería lanzarle más hardware/más rápido, o debería rediseñar la consulta para evitar la ordenación de archivos?

Hay demasiados factores para resumir en una publicación de StackOverflow, y el hecho de que existan muchos libros sobre el tema lo respalda. Mantener las bases de datos operando de manera eficiente y haciendo el mejor uso de los recursos es un trabajo de tiempo completo que requiere habilidades especializadas y estudio constante.

Jeff Atwood acaba de escribir un buen artículo de blog sobre cómo encontrar cuellos de botella en un sistema: