MI CONFIGURACIÓN ( ejemplo )
Estoy ejecutando Linux en una instancia de Amazon High CPU Extra Large EC2 con las siguientes especificaciones:
- 7 GB de memoria
- 20 unidades de cálculo EC2 (8 núcleos virtuales con 2.5 unidades de cálculo EC2 cada una)
- 1690 GB de almacenamiento de instancia local
- Plataforma de 64 bits
Tengo dos grandes bases de datos MySQL ejecutándose en el motor de almacenamiento MyISAM. Uno es de 2 GB y el otro es de 500 MB. Me gustaría asegurarme de que MySQL está utilizando tanta RAM como sea posible / necesita para maximizar las velocidades de consulta. Sé que hay un montón de opciones de configuración de memoria MySQL como key_buffer_size
y MyISAM_sort_buffer_size,
pero no estoy familiarizado con la optimización de estas.
PREGUNTAS
- ¿Cómo se comprueba qué memoria está utilizando MySQL actualmente en un sistema Linux?
- ¿Cómo se maximiza / optimiza el uso de la memoria MySQL?
- Suponiendo que mis consultas y mi esquema estén optimizados, ¿qué otros cambios debo considerar?
Respuestas:
Este es un tema difícil. No se puede responder aquí, se han escrito libros completos sobre esto. Recomiendo hacer su innodb_buffer_pool_size lo suficientemente grande. Si está utilizando tablas myisam, compruebe key_buffer_size. También se deben considerar table_cache y max_ connections.
Aquí hay algo que puede ayudarlo:
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb- performance-optimization-basics / http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
EDITAR:
Como dijo @ drew010, es importante considerar el tipo de uso que tiene el DB. El ajuste para una DB de lectura pesada es muy diferente a una escritura pesada. Además, puede considerar otras estrategias. Como Memcached, bases de datos nosql, etc.
fuente
Si necesita asegurarse de que MySQL usa toda la memoria que necesita, debe cambiar a InnoDB. A menos que use las
FULLTEXT
capacidades de búsqueda de MySQL , no habrá problemas serios.En el caso de MyISAM, se utilizan varias memorias caché, incluidas las memorias intermedias internas de claves MySQL y la memoria caché del sistema. Si desea el mejor rendimiento, debe dejar espacio para cualquiera de los cachés, pero aún así no recomiendo MyISAM para ese propósito, especialmente si sus bases de datos son pesadas en escritura: MyISAM bloquea toda la tabla en escritura, mientras que InnoDB bloquea solo las filas afectadas.
Incluso si coloca todas sus bases de datos en la memoria, aún puede tener consultas de ejecución lenta debido a índices insuficientes u otras razones.
fuente