Hai bisogno della storia di InnoDB per capire il perché. Eccolo:
STORIA DELLA GUERRA
InnoDB e la cache delle query sono in costante stato di guerra. InnoDB tende ad essere molto pesante quando si ispezionano le modifiche nel pool di buffer InnoDB e si esegue il controllo incrociato della cache delle query per le stesse modifiche.
TRATTATO DI PACE
Prima di MySQL 5.0, la cache delle query era disabilitata per InnoDB. Ora, InnoDB interagisce con esso. Per semplificare le cose, puoi semplicemente disabilitare la cache delle query impostando query_cache_size su 0.
Secondo la documentazione MySQL su query_cache_time
Se il server viene avviato con query_cache_type impostato su 0, non acquisisce affatto la cache della query mutex, il che significa che la cache della query non può essere abilitata in fase di esecuzione e si riduce l'overhead nell'esecuzione della query.
CONDIZIONI DEL SOSTENITORE
L'impostazione di query_cache_size su 0 non è una soluzione adatta a tutti.
Il motivo della guerra, in primo luogo, è il sovraccarico. InnoDB controllerà sempre le modifiche. Una cache di query più grande renderà InnoDB molto più difficile. Disabilitando la cache delle query, InnoDB e Query Cache saranno felici. Tuttavia, tu (lo sviluppatore / DBA) potresti essere una vittima di quella guerra con cattive prestazioni di interrogazione, anche con un simile trattato di pace in atto.
A seconda di quanto segue
- Carico di lavoro
- Frequenza delle modifiche
- Frequenza di lettura degli stessi dati
dovresti impostare query_cache_size sul numero che ritieni aumenti le prestazioni (equivale a iniziare un movimento clandestino).
EPILOGO
Nel caso ti stia chiedendo dove mi sia venuta in mente questa storia di guerra, per favore vedi il mio vecchio post
Leggilo attentamente perché l'ho imparato dalle pagine 209-215 di MySQL ad alte prestazioni (2a edizione)
Ho consigliato di disabilitare la cache delle query ad altri prima
NOTA: mi rendo conto che la domanda riguardava query_cache_type . Ha un effetto sulla cache delle query. La disabilitazione della cache schiaccia il dominio di InnoDB su di essa. L'impostazione manuale di query_cache_type forza semplicemente lo sviluppatore / DBA a riflettere attentamente sul tipo di query che la cache delle query incontrerà.