He acaba de encender slow query logging en mi base de datos MySQL, añadiendo lo siguiente a /etc/mysql/my.cnf
:¿Qué significa "SELECT/*! N SQL_NO_CACHE */* FROM` mytable` "en el registro lento de consultas de MySQL?
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1
Cuando corro mysqldumpslow, emite la siguiente:
Reading mysql slow query log from mysql-slow.log
Count: 1 Time=199.23s (199s) Lock=0.00s (0s) Rows=32513.0 (32513), ...
SELECT /*!N SQL_NO_CACHE */ * FROM `mytable`
...
Mirando el original mysql-slow.log
, la consulta completa fue:
SELECT /*!40001 SQL_NO_CACHE */ * FROM `mytable`;
Así que mysqldumpslow
acaba de reemplazar el número con N
(para ayudar a agregar consultas similares.)
Entonces, la pregunta es, ¿de dónde viene esa consulta y qué significa el bit /*!40001 SQL_NO_CACHE */
?
Lo mejor que puedo decir, es probablemente de un comando mysqldump
que estaba haciendo una copia de seguridad (por lo tanto, no quiero datos en caché), ¿te parece correcto? Y si es así, dado que solo leyó 32,000 filas, ¿por qué tomó 199?
Hay muchas más consultas similares en otras tablas que toman 100s, 50s, hasta 3s más razonables, la mayoría tienen alrededor de 10-20,000 filas, la más grande con 450,000 filas.
¿Tal vez podría aceptar la mejor respuesta a continuación? – rubo77