MySQL hat ein nützliches Feature namens " Query-Cache ", die die Performance von MySQL erheblich verbessert , wenn aktiviert. Der Abfrage-Cache enthält den Text einer SELECT-Anweisung zusammen mit dem Ergebnis, das nach an den Client gesendet wurde . Wenn die identischen Aussagen in der Zukunft empfangen werden , sucht der Server für die Ergebnisse aus dem Abfrage-Cache statt die Ausführung der Anweisungen wieder . Der Abfrage-Cache ist auch zwischen den Sitzungen , also eine Abfrage-Ergebnis von einem Benutzer erzeugt wird, kann von einem anderen Benutzer verwendet werden geteilt. Der Abfrage-Cache ist anwendbar in Kontexten, in denen Sie Ihre Tabellen nicht häufig ändern und der Server erhält zahlreiche identische Fragen zu den Tischen. Allerdings hat Abfragecache verschiedenen Einschränkungen . Transparent Caching
Abfrage -Cache ist völlig transparent für die Anwendung. Dies führt zu Problemen in einigen Fällen . Wenn Query-Cache aktiviert ist, können Sie immer Abfrage-Ergebnisse , auch wenn die verknüpften Tabellen gesperrt sind und werden aktualisiert. Sperren von Tabellen in der Regel bedeutet, dass die Tische sind aber unzugänglich Abfrageergebnisse aus Abfrage-Cache wird immer noch die Nutzer kommen .
Caching Limitation
Der Abfrage-Cache nicht für Sub- arbeiten wählt , Inline- Ansichten oder UNION . Die Abfragen müssen genau die gleiche sein, um das Ergebnis von Abfrage-Cache , die, wenn Sie dynamische Kommentare in der Abfrage setzen mit mehr Leerzeichen oder anderen Fall müssen Sie ein anderes Ergebnis aus Abfrage-Cache zu bekommen bedeutet, nutzen zu können. Eine weitere Einschränkung ist nur SELECT-Abfragen zwischengespeichert werden . Vermeiden Sie Kommentare oder Leerzeichen in dem Start der Abfrage als Abfrage-Cache prüft nur den ersten Buchstaben der Abfrage und nur wenn es sich um "S" geht es weiter , um fortzufahren Caching von Abfrageergebnissen .
Tabelle Granularität in Invalidation
Wenn Tabellen verändert oder aktualisiert werden , werden alle Anfragen aus den Tabellen abgeleitet ungültig sofort. Die meisten Anfragen werden nicht geändert, aber MySQL nicht identifizieren können geänderte diejenigen , so löscht es alle von ihnen. Dies ist der Hauptgrund , die Abfrage-Cache Effizienz zwingt . Gerade bei hohen Schreibgeschwindigkeiten Anwendung wie Foren, Abfrage-Cache ist Effizienz sehr gering, da dieser Einschränkung .
Fragmentierung im Laufe der Zeit
Mit der Zeit wird zersplittert und Abfrage-Cache weniger effizient. Die " FLUSH QUERY CACHE " Befehl kann für Abfrage-Cache Defragmentierung verwendet werden , aber es kann Abfrage-Cache zum Wohle eines großen Abfrage-Cache , die unsachgemäße für Online-Anwendungen ist zu blockieren.