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

mysql lento en la primera consulta, luego rápido para consultas relacionadas

Las páginas de los archivos de datos de innodb se almacenan en caché en el grupo de búfer de innodb. Esto es lo que esperarías. La lectura de archivos es lenta, incluso en buenos discos duros, especialmente las lecturas aleatorias, que es principalmente lo que ven las bases de datos.

Puede ser que su primera consulta esté haciendo algún tipo de escaneo de tabla que extrae muchas páginas en el grupo de búfer, luego acceder a ellas es rápido. O algo similar.

Esto es lo que esperaba.

Lo ideal es utilizar el mismo motor para todas las tablas (excepciones:tablas de sistema, tablas temporales (quizás) y tablas muy pequeñas o de corta duración). Si no haces esto, tendrán que pelear por carnero.

Suponiendo que todas sus tablas sean innodb, haga que el grupo de búfer utilice hasta el 75 % de la RAM física del servidor (suponiendo que no ejecute demasiadas otras tareas en la máquina).

Luego, podrá colocar alrededor de 12 G de su base de datos en la RAM, por lo que una vez que se haya "calentado", los 12 G "más utilizados" de su base de datos estarán en la RAM, donde el acceso es agradable y rápido.

Algunos usuarios de mysql tienden a "calentar" los servidores de producción después de un reinicio enviándoles consultas copiadas de otra máquina por un tiempo (serán esclavos de replicación) hasta que los agregan a su grupo de producción. Esto evita la lentitud extrema que se observa cuando la memoria caché está fría. Por ejemplo, Youtube hace esto (o al menos solía hacerlo; Google los compró y ahora pueden usar Google-fu)