Ho appena acceso il slow query logging sul mio database MySQL, aggiungendo quanto segue al /etc/mysql/my.cnf
:Che cosa significa "SELECT/*! N SQL_NO_CACHE */* FROM` mytable`" significare in nel registro query lente di MySQL?
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 1
Quando eseguo mysqldumpslow, si emette il seguente:
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`
...
Guardando l'originale mysql-slow.log
, la query completo era:
SELECT /*!40001 SQL_NO_CACHE */ * FROM `mytable`;
Così mysqldumpslow
appena sostituito il numero con N
(per facilitare l'aggregazione di query simili)
Quindi, la domanda è: da dove viene questa query e cosa significa il bit /*!40001 SQL_NO_CACHE */
?
Come meglio posso dire, è probabilmente da un comando mysqldump
che stava facendo un backup (quindi non volendo dati memorizzati nella cache), sembra giusto? E se sì, visto che legge solo 32.000 righe, perché ci sono voluti 199?
Ci sono un mucchio di query più simili su altri tavoli che richiedono 100, 50, fino a un 3 più ragionevole, la maggior parte con circa 10-20.000 righe, la più grande con 450.000 righe.
forse potresti accettare la risposta migliore qui sotto? – rubo77