In diesem Artikel wird hauptsächlich die Verwendung von Abfrage- und Löschbefehlen des MySQL-Cache vorgestellt. Für einige Tabellen, die nicht häufig Daten ändern und eine große Anzahl derselben SQL-Abfragen haben, ist der Abfrage-Cache bei Bedarf nützlicher kann darauf verweisen
MySQL-Abfragecache
Die Rolle des Abfragecaches besteht darin, dass der Server die Ergebnisse abruft, wenn die Abfrage eine Abfrage empfängt, die mit der zuvor identisch ist den Abfragecache, anstatt die letzte Abfrage erneut zu analysieren und auszuführen. Dies verbessert die Leistung erheblich und spart Zeit.
1. Abfrage-Cache konfigurieren
Ändern Sie die Konfigurationsdatei, ändern Sie query_cache_size und query_cache_type unter [mysqld] (fügen Sie hinzu, falls nicht). Unter diesen gibt query_cache_size die Größe des Caches an, und query_cache_type hat drei Werte, die den Typ der zwischengespeicherten ausgewählten Ergebnismenge angeben. Die Werte von query_cache_type lauten wie folgt:
0 oder off schaltet den Cache aus
1 oder on schaltet den Cache ein, speichert ihn aber nicht zur Verwendung. Die select-Anweisung von sql_no_cache: Wenn Sie den Namen „select sql_no_cache“ aus wei, wobei id=2
2 nicht zwischengespeichert wird oder die Aktivierung des bedingten Cachings erfordert, nur zwischenspeichern die select-Anweisung mit sql_cache, Cache select sql_cache name from wei where id=4
example Die Konfiguration ist wie folgt. Nachdem die Konfiguration abgeschlossen ist, starten Sie den MySQL-Server neu.
query_cache_size=10M query_cache_type=1
Mit dem folgenden Befehl können Sie überprüfen, ob es aktiviert ist. Dabei gibt have_query_cache an, ob es aktiviert ist, und query_cache_limit gibt die mögliche Puffergröße an Wird von einer einzelnen Abfrage verwendet, der Standardwert ist 1M; query_cache_min_res_unit ist die vom System zugewiesene Mindestcacheblockgröße. Der Standardwert ist 4 KB. Ein großer Einstellungswert ist für große Datenabfragen gut, aber wenn es sich bei Ihren Abfragen ausschließlich um kleine Datenabfragen handelt Die Konfiguration von query_cache_wlock_invalidate gibt an, ob das Cache-Ergebnis zurückgegeben oder gewartet werden soll, wenn andere Clients in die MyISAM-Tabelle schreiben bis der Schreibvorgang abgeschlossen ist, bevor die Tabelle gelesen wird, um das Ergebnis zu erhalten.
mysql> show variables like '%query_cache%'; +------------------------------+----------+ | Variable_name | Value | +------------------------------+----------+ | have_query_cache | YES | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 10485760 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | +------------------------------+----------+ 6 rows in set (0.00 sec)
2. Wir führen es zuerst einmal aus, wählen count(*) aus wei aus und führen es dann erneut aus, wie Sie sehen können dass die zweite Ausführung diesmal viel kürzer ist als bei der ersten Ausführung, da das Auswahlergebnis beim zweiten Mal aus dem Cache gelesen wird.
mysql> select count(*) from wei ; +----------+ | count(*) | +----------+ | 4194304 | +----------+ 1 row in set (3.92 sec) mysql> select count(*) from wei ; +----------+ | count(*) | +----------+ | 4194304 | +----------+ 1 row in set (0.00 sec)
mysql> show status like 'qcache%'; +-------------------------+----------+ | Variable_name | Value | +-------------------------+----------+ | Qcache_free_blocks | 1 | | Qcache_free_memory | 10475424 | | Qcache_hits | 1 | | Qcache_inserts | 1 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 0 | | Qcache_queries_in_cache | 1 | | Qcache_total_blocks | 4 | +-------------------------+----------+ 8 rows in set (0.00 sec)
Cache leeren
MySQLs FLUSH-Syntax (Cache leeren)
FLUSH flush_option [,flush_option]
flush_option kann eine der folgenden Optionen sein:
FLUSH TABLES WITH READ LOCK Schließen Sie alle offenen Tabellen und fügen Sie eine Lesesperre für alle Tabellen in der Datenbank hinzu, bis das Entsperren von Tabellen explizit ausgeführt wird. Dieser Vorgang wird häufig zur Datensicherung verwendet.
STATUS Setzt die meisten Statusvariablen auf 0 zurück.
MASTER Löschen Sie alle Binärprotokolldateien in der Binärprotokoll-Indexdatei, setzen Sie die Indexdatei der Binärprotokolldatei auf leer zurück und erstellen Sie eine neue Binärprotokolldatei. Dies ist jedoch nicht der Fall länger empfohlen. Verwendung, geändert auf Reset-Master. Wie Sie sich vorstellen können, war ich früher sehr naiv, aber es waren mehrere Befehle erforderlich. Die vorherige Methode bestand darin, zuerst den Namen der aktuellen Binärprotokolldatei herauszufinden und dann die Bereinigung durchzuführen Betrieb.
ABFRAGE-CACHE Reorganisiert den Abfrage-Cache, eliminiert Fragmente und verbessert die Leistung, hat jedoch keinen Einfluss auf die vorhandenen Daten im Abfrage-Cache. Dies ist dasselbe wie „Tabelle leeren“ und „Abfrage-Cache zurücksetzen“. Löscht den Inhalt des Abfragecaches) sind unterschiedlich.
SLAVE Es ähnelt dem Zurücksetzen der Replikation. Dadurch vergisst die Slave-Datenbank den Replikationsspeicherort der Master-Datenbank und löscht auch das heruntergeladene Relay-Protokoll empfohlen. Geändert in „Slave zurücksetzen“. Das ist auch sehr nützlich.
Im Allgemeinen werden Flush-Vorgänge in binären Protokolldateien aufgezeichnet, FLUSH LOGS, FLUSH MASTER, FLUSH SLAVE und FLUSH TABLES WITH READ LOCK werden jedoch nicht aufgezeichnet, wenn also das oben Genannte zutrifft Vorgänge werden in der binären Protokolldatei aufgezeichnet und wirken sich auf die Slave-Datenbank aus. Hinweis: Der Reset-Vorgang spielt tatsächlich die Rolle einer erweiterten Version des Flush-Vorgangs.
Das obige ist der detaillierte Inhalt vonGeben Sie die MySQL-Cache-Abfrage frei und löschen Sie den Befehlsbeispielcode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!