Svantaggi di una cache delle query

January 16

Svantaggi di una cache delle query


MySQL ha una funzione utile denominata "cache delle query", che migliora le prestazioni di MySQL in modo significativo quando abilitato. La cache delle query contiene il testo di una istruzione SELECT insieme al risultato secondo che è stato inviato al client. Quando le dichiarazioni identiche vengono ricevuti in futuro, il server cerca i risultati dalla cache delle query, invece di eseguire nuovamente i dichiarazioni. La cache delle query è condivisa anche tra le sessioni, quindi un risultato della query generato da un utente può essere utilizzato da un altro utente. La cache delle query è applicabile in contesti in cui le tabelle spesso non cambiano e il server riceve numerosi quesiti identici per quanto riguarda le tabelle. Tuttavia, cache delle query ha varie limitazioni.

Caching trasparente

cache delle query è completamente trasparente per l'applicazione. Questo può causare problemi in alcune circostanze. Quando cache delle query è abilitato, si può sempre ottenere risultati di query anche quando le tabelle correlate sono bloccati e sono in fase di aggiornamento. Blocco tavoli di solito significa che i tavoli sono inaccessibili, ma i risultati delle query di cache delle query saranno ancora venire per gli utenti.

Caching Limitazione

La cache delle query non funziona per sub-select, viste in linea, o l'unione. Le query devono essere esattamente lo stesso, al fine di utilizzare il risultato dalla cache delle query, il che significa che se si mette commenti dinamici nella query con più spazi o caso diverso, si ottiene un risultato diverso da cache delle query. Un altro limite è solo query selezionati vengono memorizzati nella cache. Evitare commenti o spazi nella inizio della query come cache delle query controlla solo la prima lettera della query e solo se si tratta di "S" non procedi procedere cache i risultati delle query.

Livello Tabella granularità in invalidazione

Se le tabelle sono state alterate o aggiornate, tutte le query derivati ​​dalle tabelle vengono invalidati immediatamente. La maggior parte delle domande non sono cambiati, ma MySQL non può identificare quelli modificati, quindi cancella tutti loro. Questa è la ragione principale che vincola l'efficienza cache delle query. In particolare con l'applicazione di alta scrittura come forum, l'efficienza della cache di query è molto bassa a causa di questa limitazione.

La frammentazione nel tempo

Con il tempo, cache delle query diventa frammentato e meno efficiente. Il comando "a filo QUERY CACHE" può essere utilizzato per la deframmentazione cache delle query, ma può bloccare cache delle query per il bene di una grande cache delle query, che è improprio per le applicazioni online.