2010-05-21 19 views
5

Nella mia applicazione ho una query mySQL lenta che devo riscrivere. Il problema è che è lento solo sul mio server di produzione e solo quando non è memorizzato nella cache. La prima volta che lo eseguo, ci vorranno 12 secondi, quindi in qualsiasi momento dopo sarà 500 millisecondi.Strategie di benchmark per query singole MySQL

C'è un modo semplice per testare questa query senza colpire il cache delle query in modo da poter vedere i risultati del mio refactoring?

Grazie!

risposta

7

MySQL supporta per impedire la memorizzazione nella cache di singole query. Prova

SELECT SQL_NO_CACHE field_a, field_b FROM table; 

In alternativa si può diasble la cache delle query per la sessione corrente:

SET SESSION query_cache_type = OFF; 

Vedi http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

1

Per aggiungere alla buona risposta di Johannes, quello che faccio è

RESET QUERY CACHE;

Questo ha il leggero vantaggio aggiunto e di non richiedere alcuna modifica alle dichiarazioni che sto eseguendo o alla connessione.

Una cosa banale da fare è modificare l'istruzione che si sta eseguendo in qualche modo, ad esempio inserire un numero casuale in un commento, perché le query si trovano nella cache solo se sono identiche a una query precedente.