Mysql
 sql >> Database >  >> RDS >> Mysql

Quando utilizzare SQL_NO_CACHE

SQL_NO_CACHE

Basta aggiungere SQL_NO_CACHE dopo la parte SELECT dell'istruzione SELECT e prima dell'elenco dei campi. La prima query seguente utilizzerà la cache delle query se è abilitata e la query è memorizzata nella cache:

SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms

La seconda query seguente non utilizzerà la cache delle query:

SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time

Ciò è particolarmente utile durante il benchmarking di una query; se la cache delle query è abilitata anche se la prima query potrebbe richiedere del tempo, la seconda e le successive sono quasi istantanee. Con l'uso di SQL_NO_CACHE puoi essere certo che la cache delle query non viene utilizzata e puoi confrontare in modo sicuro i tempi dei risultati. L'hint SQL_NO_CACHE disattiva il meccanismo di memorizzazione nella cache delle query integrato in MySQL per una query particolare. Puoi aiutare MySQL a rendere più efficiente la cache delle query utilizzando questo suggerimento su query altamente dinamiche (come una ricerca per parola chiave o un rapporto che viene eseguito solo di notte). Assicurati che la memorizzazione nella cache delle query sia attivata, altrimenti non è necessario comando.

che cosa SQL_CACHE e SQL_NO_CACHE ?

Le opzioni SQL_CACHE e SQL_NO_CACHE influiscono sulla memorizzazione nella cache dei risultati della query nella cache della query. SQL_CACHE dice a MySQL di memorizzare il risultato nella cache delle query se è memorizzabile nella cache e il valore della variabile di sistema query_cache_type è 2 o DEMAND. Con SQL_NO_CACHE, il server non utilizza la cache delle query. Non controlla la cache della query per vedere se il risultato è già memorizzato nella cache, né memorizza nella cache il risultato della query. (A causa di una limitazione nel parser, uno spazio deve precedere e seguire la parola chiave SQL_NO_CACHE; un non spazio come una nuova riga fa sì che il server controlli la cache delle query per vedere se il risultato è già memorizzato nella cache.)

NO_CACHE secondo la mia opinione può essere utilizzato se 'CACHE' è abilitato e i dati nel db sono aggiornati dinamicamente, ovvero non è possibile fare affidamento sulla cache dei dati db, ad esempio:memorizzare l'hash della password dell'utente non possiamo fare affidamento su CACHE poiché è frequente possibilità di cambio dati

Aggiornamenti di scenari utili

1) forzare a non utilizzare la cache per testare la velocità della query