Mysql 5.7 vs 5.5: una consulta simple tarda 50 veces más en ejecutarse

Mysql 5.7 vs 5.5: una consulta simple tarda 50 veces más en ejecutarse

Tengo una base de datos "álgebra" con una tabla "preguntas" con 1.033.990 filas. Los registros tienen un atributo 'resuelto' que es INT. tengo una consulta sencilla

select count(*) from questions where solved = 0

Tengo dos servidores con CPU similares. En ambos servidores las mesas son iguales. (La base de datos es una réplica de la producción). Están en SSD. Un servidor tiene Ubuntu 14.04 con MySQL 5.5.49 y otro servidor tiene Ubuntu 16.04 con MySQL 5.7.12.

El problema es que esta consulta tarda sólo 0,009 segundos en MySQL 5.5, pero tarda 0,304 segundos en MySQL 5.7. ¡¡¡Que es 34 veces MÁS LENTO!!!

Los planes de consulta son más o menos similares:

Servidor lento:

id      select_type     table   partitions      type    possible_keys   key     key_len ref     rows    filtered        Extra
1       SIMPLE  questions       NULL    index   NULL    by_topic_solved 97      NULL    1033990 10.00   Using where; Using index

Servidor rápido:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  questions   index   NULL    by_topic_solved 97  NULL    1033989 Using where; Using index

Por qué este podría ser el caso me desconcierta. He visto otros problemas de rendimiento más complicados con esta nueva configuración 5.7, pero este es el problema más sencillo de abordar en términos de la consulta subyacente.

Estoy tratando de encontrar la explicación para esto o por dónde empezar. my.cnf era más o menos similar entre los dos. Cualquier sugerencia será aceptada con gratitud.

Respuesta1

He entendido completamente este problema. Lo que cambió es que en el nuevo MySQL, el caché de consultas está deshabilitado debido a la configuración predeterminada de query_cache_type = OFF. Cuando volví a habilitar el caché de consultas configurando query_cache_type=1, recuperé un mejor rendimiento. Dado que mi sitio utiliza 100 veces más consultas SELECT que consultas INSERT/UPDATE, usar el caché de consultas tiene sentido para mí. ¡Gracias por indicarme que mire en esta dirección!

información relacionada