Una cosa que debe tenerse en cuenta es cómo MySQL usa buffers para sus principales motores de almacenamiento: InnoDB y MyISAM .
Lo que se encuentra en la memoria caché difiere mucho entre estos motores de almacenamiento.
InnoDB almacena en caché tanto las páginas de datos como las de índice. Se cargan en el InnoDB Buffer Pool, que es dimensionado por innodb_buffer_pool_size .
MyISAM almacena en caché solo las páginas de índice y se cargan en el Key Cache (Key Buffer), que tiene el tamaño key_buffer_size .
Debe usar information_schema.tables para obtener los tamaños de datos e índices ocupados en el disco para dimensionar correctamente el InnoDB Buffer Pool y MyISAM Key Cache .
Según la cantidad de datos que tenga y el tiempo que permita, puede calentar los cachés de la siguiente manera:
Para cada mesa TableT
- Ir a cada índice NDX
- para cada índice NDX
- ejecute SELECT cada columna en NDX, al menos una columna no indexada en TableT desde TableT
Al hacer esto, garantiza que cada página de datos e índice se lea al menos una vez. Se sentarán en el caché. Este concepto es practicado, en parte y en principio, por Percona . Percona construyó este concepto en mk-slave-prefetch . Lo que hace este programa es
- leer registros de retransmisión en un esclavo delante del esclavo que procesa el SQL en él
- tome una instrucción SQL del registro de retransmisión y conviértala en SELECCIONAR utilizando las cláusulas WHERE, GROUP BY y ORDER BY como guía para elegir índices
- ejecutar la instrucción SELECT que vino del SQL convertido
Esto obliga al esclavo a tener el 99.99% de los datos que necesita para procesar el SQL rápidamente. Esto también hace que el esclavo esté preparado en caso de que usted realice una conmutación por error manual al esclavo y lo promocione a un maestro CUANDO LOS CACHÉ SÓLO SON IGUALES COMO EL MAESTRO DEL QUE FALLÓ.
CONCLUSIÓN
No hay nada mejor que tener cachés listos, dispuestos y capaces de usar en un entorno de INSERTOS, ACTUALIZACIONES y DELETES pesados.
Darle una oportunidad !!!
CONSIDERACIÓN
Con el nacimiento de productos como memcached, algunos se han librado de la necesidad de realizar un ajuste adecuado de MySQL. Por supuesto, muchos sitios se benefician del impulso en la recuperación de datos que se proporciona al controlar el comportamiento de almacenamiento en caché de los datos como los desarrolladores han visto rápidamente con memcached. Muchos otros sitios, simplemente cambiando los motores de almacenamiento o configurando MySQL correctamente, se han dado cuenta de los mismos beneficios de rendimiento. Antes de renunciar a la base de datos y usarla estrictamente como repositorio, aproveche al máximo su base de datos. Siga con la debida diligencia y se sorprenderá gratamente de lo que MySQL hará por usted.