2011-11-04 8 views
5

Tengo una bonita configuración de mysql 5.1 de vainilla, y estoy intentando sintonizarla. He encontrado esta handy scriptvariables de sintonización de mysql - actuales y predeterminadas

Se hizo las siguientes sugerencias:

query_cache_limit (> 1M, or use smaller result sets) 
query_cache_size (> 16M) 
join_buffer_size (> 128.0K, or always use indexes with joins) 
table_cache (> 64) 
innodb_buffer_pool_size (>= 14G) 

En leer sobre lo que significan y lo que se establecen actualmente a, he encontrado que puedo correr "mysqladmin variables"

Mis valores actuales son:

query_cache_limit      | 1048576 
query_cache_size      | 16777216 
join_buffer_size      | 131072  
innodb_buffer_pool_size     | 8388608 

¿Cómo leo estos, son Kbytes? entonces ¿eso es 1M, 16M, 13M y 8M?

Mi caja es solo 4G de Ram y en un día normal solo tenía algunos cientos de megas libres de memoria. Debería seguir estas sugerencias y hacer:

#innodb_buffer_pool_size = 15G 
#table_cache = 128 
#join_buffer_size = 32M 
#query_cache_size = 64M 
#query_cache_limit = 2M 

Im confundido por el 15G, es esto algo de espacio en disco, no es una cosa de la memoria? Si es así, entonces las recomendaciones no son muy buenas ¿verdad?

¿Debo obtener más memoria para mi caja?

Más información: - Mi tamaño de db es 34Gigs, utilizo todas las innodb, tengo 71 tablas, 4 de ellas son enormes, el resto son pequeñas. He estado pensando en mover los grandes a SOLR y hacer todas las consultas desde allí, pero quería ver qué puedo hacer con la sintonización básica.

gracias Joel

+0

Encontré esto una lectura útil http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/ –

+0

Esto podría ser mejor preguntado en serverfault.com –

+0

Leí el perfblog, pero todavía estaba confundido, Creo que asume que ya sabes qué es esa variable y qué hace. – Joelio

Respuesta

0

No debe establecer su buffer de InnoDB mayor que la memoria disponible. El script probablemente lo recomendó en función del número de registros en su tabla y su tamaño físico. El rendimiento de Innodb está basado en la memoria, si puede ajustarse a los índices en la memoria, el rendimiento disminuirá rápidamente y notablemente. Así que establecer innodb_buffer_pool_size high es casi siempre un buen consejo.

Innodb no es el mejor tipo de tabla para todo cuando se trata de mysql. Las tablas muy grandes que generalmente tienen muchas inserciones, pero pocas lecturas y actualizaciones (es decir, registro) son mejores que las tablas MyISAM. Sus tablas muy activas (inserciones, actualizaciones, eliminaciones, selecciones) están mejor que Innodb. Puede haber una guerra de llama en este consejo, y es un consejo genérico.

Pero dicho esto, ninguna secuencia de comandos va a ser para decirle cuál debe ser su configuración. Solo puede hacer un mejor invitado. La mejor configuración se basa en sus patrones de acceso a datos. Realmente tiene que leer sobre cuáles son todas las variables. mysqlperformanceblog.com es un excelente lugar para aprender sobre mysql, además del manual.

Cuando esté en mysql, use "show variables" y "show status" para ver qué está pasando. También puede ejecutar "show innodb status", pero es posible que no comprenda ese resultado si no sabe cuáles son las variables.

+0

Gracias, esto parece un buen consejo, actualicé mi vm y agregué más memoria, ejecuté 8 gigas gratis, así que configuré el innodb_buffer_pool_size en 4G. Cuando comencé a usar mysql esperaba que utilizara esta memoria 4G, pero no la veo. Ahora mismo, después de ejecutar un gran trabajo por lotes durante toda la noche, usa 68 millones de residentes y 331 millones de intercambios. ¿Hice algo mal? – Joelio

+0

Leí sus "variables de espectáculo" y lo intenté, y mysql aún muestra el número anterior de innodb_buffer_pool_size ... no estoy seguro de lo que hice mal, agregué los vars a my.cnf y reinicié mysql .. – Joelio

+0

Ok, pensé a cabo, duh puse las variables en la sección incorrecta de la my.cnf, gracias por la idea de comprobar las variables de la demostración. – Joelio

Cuestiones relacionadas