D4rkAng3l
21-05-2009, 17:10
Ciao,
praticamente devo fare un progetto per un esame...ho un database da ottimizzare inserendo indici ed ottimizzando le query con le view e devo mostrare le differenze di prestazioni prima e dopo l'ottimizzazione (cioè devo far vedere quanto tempo impiegava una query prima e quanto tempo impiega se fatta in maniera ottimizzata sul database ottimizzato).
Ho un problema nel fare queste valutazioni però...la prima volta che eseguo una query questa ci mette un certo tempo a dare una risposta, se poi la rieseguo una seconda volta ci mette molto meno tempo....ad esempio:
Eseguo una certa query per una prima volta, e ci mette ben 1.12 secondi a dirmi che non trova il risultato:
mysql> select utente.User_Id, utente.Nome, utente.Cognome, comuni.comune
-> from utente, comuni
-> where comuni.cap = '00100' and comuni.cap = utente.Cap;
Empty set (1.12 sec)
Successivamente la reseguo una seconda volta:
mysql> select utente.User_Id, utente.Nome, utente.Cognome, comuni.comune
-> from utente, comuni
-> where comuni.cap = '00100' and comuni.cap = utente.Cap;
Empty set (0.12 sec)
E ci mette soli 0.12 secondi.
Ho pensato che ciò potrebbe dipendere dalla query cache così ho provato con il comando:
mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_query_cache | YES |
+------------------+-------+
1 row in set (0.01 sec)
e sembrerebbe che la query cache sia attiva...poi leggendo sulla guida ufficiale online di MySql dice: To set the size of the query cache, set the query_cache_size system variable. Setting it to 0 disables the query cache. The default size is 0, so the query cache is disabled by default.
e allora ho provato a vedere qual'è l'effettiva dimensione della query cache con:
mysql> SHOW VARIABLES LIKE 'query_cache_size';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| query_cache_size | 0 |
+------------------+-------+
1 row in set (0.01 sec)
e allora dovrebbe essere a 0...quindi come se fosse disabilitata....
Ma allora perchè mai quando rieseguo per una seconda volta una query questa è sempre molto più rapida nell'esecuzione di quando la eseguo la prima volta? da cosa dipende? Per favore illuminatemi che se no è un incubo valutare le prestazioni del progetto...
Grazie
Andrea
praticamente devo fare un progetto per un esame...ho un database da ottimizzare inserendo indici ed ottimizzando le query con le view e devo mostrare le differenze di prestazioni prima e dopo l'ottimizzazione (cioè devo far vedere quanto tempo impiegava una query prima e quanto tempo impiega se fatta in maniera ottimizzata sul database ottimizzato).
Ho un problema nel fare queste valutazioni però...la prima volta che eseguo una query questa ci mette un certo tempo a dare una risposta, se poi la rieseguo una seconda volta ci mette molto meno tempo....ad esempio:
Eseguo una certa query per una prima volta, e ci mette ben 1.12 secondi a dirmi che non trova il risultato:
mysql> select utente.User_Id, utente.Nome, utente.Cognome, comuni.comune
-> from utente, comuni
-> where comuni.cap = '00100' and comuni.cap = utente.Cap;
Empty set (1.12 sec)
Successivamente la reseguo una seconda volta:
mysql> select utente.User_Id, utente.Nome, utente.Cognome, comuni.comune
-> from utente, comuni
-> where comuni.cap = '00100' and comuni.cap = utente.Cap;
Empty set (0.12 sec)
E ci mette soli 0.12 secondi.
Ho pensato che ciò potrebbe dipendere dalla query cache così ho provato con il comando:
mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_query_cache | YES |
+------------------+-------+
1 row in set (0.01 sec)
e sembrerebbe che la query cache sia attiva...poi leggendo sulla guida ufficiale online di MySql dice: To set the size of the query cache, set the query_cache_size system variable. Setting it to 0 disables the query cache. The default size is 0, so the query cache is disabled by default.
e allora ho provato a vedere qual'è l'effettiva dimensione della query cache con:
mysql> SHOW VARIABLES LIKE 'query_cache_size';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| query_cache_size | 0 |
+------------------+-------+
1 row in set (0.01 sec)
e allora dovrebbe essere a 0...quindi come se fosse disabilitata....
Ma allora perchè mai quando rieseguo per una seconda volta una query questa è sempre molto più rapida nell'esecuzione di quando la eseguo la prima volta? da cosa dipende? Per favore illuminatemi che se no è un incubo valutare le prestazioni del progetto...
Grazie
Andrea