MySQL Query Cache verstehen und wann sollte er implementiert werden?

MySQL Query Cache verstehen und wann sollte er implementiert werden?

Auf unserem aktuellen MySQL-Server ist der Abfragecache aktiviert.

Qchache_hits: 31913 
Qchache_inserts: 50959
Qchache_lowmem_prunes: 9320
Qchache_not_chached: 209320
Qchache_queries_in_chace: 986

com_update: 0
com_delete: 0
com_Select: 10

Ich verstehe den Abfrage-Cache nicht ganz – ich lese gerade darüber und versuche, ihn zu verstehen.

Unsere Datenbank enthält Bestandsdaten, Kundendaten, Mitarbeiterdaten, Verkaufsdaten und so weiter. Die Abfrage wird sehr selten mehr als einmal ausgeführt. Die Möglichkeit, dass eine Abfrage zweimal ausgeführt wird, bedeutet, dass bestimmte Verkaufsinformationen zweimal angezeigt werden. Aber im Grunde ändert sich alles in unserem System ständig. Es wird ständig aktualisiert, gelöscht, eingefügt und ich kann mir spontan nicht vorstellen, dass Benutzer dieselbe Abfrage zweimal innerhalb einer Woche ausführen.

Muss ich den Abfragecache überhaupt aktivieren? Ich vermute, dass durch die Einfügungen 51.000 Einträge hinzugefügt wurden, von denen aber nur 986 gespeichert werden?

Wäre es eine Idee, den Cache zu aktualisieren und ihn eine Woche lang zu beobachten und zu prüfen, wie viele der im Cache gespeicherten Abfragen abgerufen werden, vielleicht wöchentlich, um zu sehen, ob dies tatsächlich Vorteile bringt?

Jede Hilfe/Anleitung hierzu ist willkommen, danke

Antwort1

Ja, 51.000 Einträge wurden hinzugefügt, nur 986 sind jetzt drin. Es wurden also ungefähr 50.000 Einträge zum Cache hinzugefügt, die aber nicht mehr da sind, 9.000 davon, weil der Speicher im Cache voll war, und der Rest, weil Einfügungen/Aktualisierungen Cache-Einträge ungültig machten. Com_select ist ein Parameter, den man kennen sollte, wenn man entscheiden möchte, ob man Vorteile bekommt. Aber eigentlich hängt es hauptsächlich davon ab, welche Abfragen zwischengespeichert werden.

Wenn Sie eine Select-Anweisung ausführen, bei der Sie sicher sind, dass eine Zwischenspeicherung nicht von Vorteil wäre, können Sie der Select-Anweisung SQL_NO_CACHE hinzufügen, siehedie Dokumentation hier.

Ich empfehle zu lesenDieser Artikel(und dieser Blog im Allgemeinen).

verwandte Informationen