2011-09-28 19 views
7

Todavía estoy luchando con el rendimiento de mi base de datos MySQL usando el motor InnoDB. Especialmente el rendimiento de la inserción de datos, menor el rendimiento de las consultas en ejecución.¿Cómo hacerlo para MySQL InnoDB (insertar) la optimización del rendimiento?

He estado buscando en Google información, cómo hacerlo, etc., pero la mayoría de la información me pareció bastante profunda. ¿Puedo encontrar en algún lugar de la red información básica para "novatos", un punto de partida para la optimización del rendimiento? El primero, la mayoría de los pasos de importación para la optimización InnoDB, se explica de una manera menos complicada.

estoy usando la plataforma Windows

+0

http://www.mysqlperformanceblog.com/2011/03/18/video-the-innodb-storage-engine-for-mysql/ –

+0

Lol @ "profundo" ........... – Pacerier

Respuesta

15

que utiliza para administrar un par muy grande bases de datos MySQL (como, 1 TB +). Eran bestias enormes e implacables con un apetito interminable que me causaba problemas estomacales.

He leído todo lo que pude encontrar en MySQL Performance Tuning e innodb. Aquí hay un resumen de lo que me ayudó:

  1. El libro High Performance MySQL es bueno, pero solo lo hace llegar tan lejos.
  2. El blog MySQL Performance Blog (this link is to their posts tagged 'innodb') fue el recurso general más útil que encontré en la red. Entran en detalles sobre muchos problemas de ajuste innodb. Se pone 'ranty' a veces, pero en general es genial. Aquí hay otro enlace allí en InnoDB Performance Optimization Basics que está bien.
  3. Lo último importante que hice para aprender fue simplemente leer los documentos de MySQL. Leí cómo funciona cada último parámetro, los cambié en mi servidor y luego hice algunos perfiles básicos. Después de un tiempo, descubres qué funciona ejecutando grandes consultas y viendo qué sucede. He aquí un buen lugar para empezar: InnoDB Performance Tuning and Troubleshooting

Al final, es sólo la experimentación y el trabajo a través de las cosas hasta que recupere el conocimiento suficiente para saber lo que funciona.

+0

Gracias por su respuesta detallada. No voy a trabajar mucho con MySQL y, lamentablemente, no tengo tanto tiempo para estudiar todo esto, pero tengo algunos buenos puntos de partida ahora – waanders

+1

@Kevin, ¿Has leído cómo funciona cada configuración? ¿Cómo es posible cuando hay tanto como [622 variables de servidor] (https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html)? Y esa lista solo incluye algunas de las variables que son [específicas de InnoDB] (http://stackoverflow.com/a/29539807/632951). – Pacerier

+0

Leí todos los documentos de la versión que estaba usando. Fue hace un tiempo, pero sí hubo muchos. Construimos esto en el transcurso de un par de años. –

-1

no hice uso de la 'red, que utilizan los libros. :)

El libro que utilicé para aprender MySQL es "Beginning MySQL" de Wrox Press, de Robert Sheldon y Geoff Moes. El Capítulo 15 aborda algunos aspectos básicos de la optimización. Me gustó mucho este libro y creo que sería una buena lectura y ha sido mi referencia número uno. Pero no es muy específico para el motor de almacenamiento.

Tengo otro libro, Pro MySQL de apress que entra en muchos más detalles sobre los motores de almacenamiento en particular, pero también es mucho más difícil de leer. Aún así, es una buena referencia.

+0

Gracias, tal vez tengo que comprar este libro (s). Pero para la mayoría de los problemas de programación puedo usar la red, debería haber algo de información en alguna parte ... – waanders

4

Para novatos: innodb_flush_log_at_trx_commit = 0, si puede permitirse perder hasta 1 segundo de su trabajo si el servidor falla. Este es el equilibrio entre rendimiento y confiabilidad, pero mejorará enormemente su rendimiento de escritura. Si puede pagar el caché de escritura respaldado por batería, úselo.

Específicamente en Windows, y para el rendimiento de escritura, MariaDB 5.3 podría ser una mejor idea que stock MySQL de Oracle, ya que MariaDB puede utilizar mejor el IO asíncrono en Windows. Escribí una nota al respecto hace un tiempo here, en referencia sintética estándar que funciona hasta 500% mejor que stock MySQL 5.5 (ver imágenes al final de la nota).

Sin embargo, lo primero y más importante que mata el rendimiento es la descarga del disco.Esto se puede solucionar si relaja la durabilidad con el parámetro * innodb_flush_log_at_trx_commit *, con caché de escritura respaldada por batería. También podría considerar el uso de transacciones más grandes, que reducen la cantidad de descargas de disco.

Cuestiones relacionadas