Um es einfach auszudrücken: Sie können für dasselbe SQL die Phasen des SQL-Parsings und der Ausführungsplangenerierung überspringen und die zwischengespeicherten Ergebnisse direkt zurückgeben. Das heißt, die vollständigen Ergebnisse der SELECT-Abfrage werden zwischengespeichert.
Der Cache wird in einer Hash-Tabelle gespeichert und durch einen Hash-Wert referenziert. Der Hash-Wert umfasst: die Abfrage selbst, die aktuelle Abfragedatenbank, das Client-Protokoll usw. Es ist jedoch zu beachten, dass jeder Unterschied in der SQL-Anweisung zu einem Cache-Trefferfehler führt (Leerzeichen, Kommentare, unterschiedliche Variablennamen).
Aber der Abfrage-Cache weist auch schwerwiegende Leistungsprobleme auf:
(1) Abfrage muss vor dem Lesen überprüft werden Ob der Cache getroffen wird
(2) Wenn sich die Abfrage nicht im Cache befindet, wird sie im Cache abgelegt und belegt den Systemverbrauch
(3) Wenn die Wenn die Datentabelle neu mit Daten aktualisiert wird, wird der Cache ungültig, was zu einem enormen Systemverlust führt.
Offensichtlich führen Caching und Cache-Invalidierung zu einer erheblichen Systemauslastung. Das Abfragen des Caches bei hoher Parallelität kann zu einer Verschlechterung der Systemleistung und zu Zombies führen. Daher wird empfohlen, zum Zwischenspeichern von Daten eine In-Memory-Datenbank wie Memcache zu verwenden.
Um es einfach auszudrücken: Sie können für dasselbe SQL die Phasen der SQL-Analyse und Ausführungsplangenerierung überspringen und die zwischengespeicherten Ergebnisse direkt zurückgeben. Das heißt, die vollständigen Ergebnisse der SELECT-Abfrage werden zwischengespeichert.
Der Cache wird in einer Hash-Tabelle gespeichert und durch einen Hash-Wert referenziert. Der Hash-Wert umfasst: die Abfrage selbst, die aktuelle Abfragedatenbank, das Client-Protokoll usw. Es ist jedoch zu beachten, dass jeder Unterschied in der SQL-Anweisung zu Cache-Trefferfehlern führt (Leerzeichen, Kommentare, unterschiedliche Variablennamen).
Aber der Abfrage-Cache weist auch schwerwiegende Leistungsprobleme auf:
(1) Die Die Abfrage muss vor dem Lesen überprüft werden. Ob der Cache getroffen wird
(2) Wenn sich die Abfrage nicht im Cache befindet, wird sie im Cache abgelegt und belegt den Systemverbrauch
(3) Wann Wenn die Datentabelle neu mit Daten aktualisiert wird, wird der Cache ungültig, was zu einem enormen Systemverlust führt.
Offensichtlich führen Caching und Cache-Invalidierung zu einer erheblichen Systemauslastung. Das Abfragen des Caches bei hoher Parallelität kann zu einer Verschlechterung der Systemleistung und zu Zombies führen. Daher wird empfohlen, zum Zwischenspeichern von Daten eine In-Memory-Datenbank wie Memcache zu verwenden.
Das obige ist der detaillierte Inhalt vonEinführung in den leistungsstarken MySQL-Abfrage-Cache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!