Heim Datenbank MySQL-Tutorial Analysieren Sie die Startmethode und die Parameter des MySQL-Cache (query_cache_size).

Analysieren Sie die Startmethode und die Parameter des MySQL-Cache (query_cache_size).

Apr 01, 2017 am 09:59 AM

MySQLAbfrage-Cache wird seit Version 4.1 bereitgestellt, aber es lohnt sich, ihn heute zu studieren. In der Standardkonfiguration ist diese Funktion von MySQL nicht aktiviert. Möglicherweise stellen Sie fest, dass der Wert der Variablen have_query_cache für MYSQL-Anfänger „Ja“ lautet Es ist leicht zu glauben, dass, wenn dieser Parameter JA ist, dies bedeutet, dass Cache aktiviert ist. Tatsächlich ist dies falsch Die aktuelle Version von MYSQL unterstützt den Abfrage-Cache. Ob der Abfrage-Cache aktiviert wird, hängt tatsächlich vom Wert eines anderen Parameters ab: query_cache_size. Der Wert ist 0, was bedeutet, dass der Abfrage-Cache deaktiviert ist und die Standardkonfiguration 0 ist. Konfigurationsmethode:

Suchen Sie den folgenden Inhalt in der

Konfigurationsdatei
my.ini oder my.cnf von MYSQL:

# Der Abfrage-Cache wird verwendet, um SELECT-Ergebnisse zwischenzuspeichern und später zurückzugeben. Wenn Ihre# viele identische Abfragen haben und sich die Tabellen selten ändern, sehen Sie sich die Statusvariable

# „Qcache_lowmem_prunes“ an, um zu überprüfen, ob der aktuelle Wert

# hoch genug ist für Ihre Last.

# Hinweis: Falls sich Ihre Tabellen sehr häufig ändern oder Ihre Abfragen

# sich jedes Mal textlich unterscheiden, kann der Abfragecache zu einem

führen # Verlangsamung statt Leistungsverbesserung.
query_cache_size=0

Die oben genannten Informationen sind die Standardkonfiguration und ihr
Kommentar
bedeutet, dass der Abfragecache von MYSQL zum Zwischenspeichern ausgewählter Abfrageergebnisse verwendet wird. Und wenn die gleiche Abfrageanfrage das nächste Mal eingeht, wird die eigentliche Abfrageverarbeitung nicht mehr durchgeführt, sondern die Ergebnisse werden direkt zurückgegeben. Ein solcher Abfragecache kann die Geschwindigkeit der Abfrage erhöhen und die Abfrageleistung optimieren Eine große Anzahl gleicher oder ähnlicher Abfragen ändert selten die Daten in der Tabelle, andernfalls besteht keine Notwendigkeit, diese Funktion zu verwenden. Sie können anhand des Werts der Variablen Qcache_lowmem_prunes überprüfen, ob der aktuelle Wert Ihrer aktuellen Systemlast entspricht. Hinweis: Wenn die von Ihnen abgefragte Tabelle
häufig aktualisiert wird
und selten dieselbe Abfrage enthält, ist es am besten, den Abfragecache nicht zu verwenden.

Spezifische Konfigurationsmethode:

1. Stellen Sie query_cache_size auf eine bestimmte Größe ein. Die spezifische Größe hängt von der tatsächlichen Situation der Abfrage ab, es ist jedoch am besten, sie auf ein Vielfaches von 1024 mit einem Referenzwert von 32 MB festzulegen. 2. Fügen Sie eine Zeile hinzu: query_cache_type=1Der Parameter query_cache_type wird verwendet, um den Cache-Typ zu steuern. Beachten Sie, dass dieser Wert nicht zufällig festgelegt werden kann und auf eine Zahl gesetzt werden muss.



Wenn auf 0 gesetzt, kann man sagen, dass Ihr Cache überhaupt nutzlos ist, was einer Deaktivierung gleichkommt. Aber muss das System in diesem Fall die durch query_cache_size festgelegte Größe zuweisen? Diese Frage muss getestet werden?

Wenn auf 1 gesetzt, werden alle Ergebnisse zwischengespeichert, es sei denn, Ihre Select-Anweisung verwendet SQL_NO_CACHE, um das Abfrage-Caching zu deaktivieren.

Bei Einstellung auf 2 werden nur die Abfragen zwischengespeichert, die über SQL_CACHE in der SELECT-Anweisung zwischengespeichert werden müssen.
Analysieren Sie die Startmethode und die Parameter des MySQL-Cache (query_cache_size).OK, einige der Dateien nach der Konfiguration lauten wie folgt:

query_cache_size=128M

query_cache_type=1
Speichern Sie die Datei, starten Sie den MYSQL-Dienst neu und starten Sie dann Abfrage durch Folgendes Überprüfen Sie, ob es wirklich aktiviert ist:





Hängt hauptsächlich davon ab, ob die Werte von query_cache_size und query_cache_type mit dem übereinstimmen, was wir festgelegt haben:

Der Wert von query_cache_size ist hier 134217728, wir setzen 128M, was eigentlich derselbe ist, aber die Einheiten sind unterschiedlich. Sie können ihn selbst umrechnen: 134217728 = 128*1024*1024.

query_cache_type ist auf 1 gesetzt und wird als ON angezeigt. Dies wurde bereits erwähnt.

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             | 134217728 |

| query_cache_type             | ON        |

| query_cache_wlock_invalidate | OFF       |

+——————————+———–+

6 rows in set (0.00 sec)
Nach dem Login kopieren
Kurz gesagt bedeutet die obige Anzeige, dass die Einstellungen korrekt sind. Ob die Abfrage jedoch in der tatsächlichen Abfrage zwischengespeichert werden kann, muss noch manuell getestet werden. Wir können dies über den Anzeigestatus wie „%Qcache“ testen %';-Anweisung Nachdem wir nun die Abfrage-Cache-Funktion aktiviert haben, schauen wir uns zunächst die Werte der relevanten Parameter an:



mysql> show status like ‘%Qcache%';

+————————-+———–+

| Variable_name           | Value     |

+————————-+———–+

| Qcache_free_blocks      | 1         |

| Qcache_free_memory      | 134208800 |

| Qcache_hits             | 0         |

| Qcache_inserts          | 0         |

| Qcache_lowmem_prunes    | 0         |

| Qcache_not_cached       | 2         |

| Qcache_queries_in_cache | 0         |

| Qcache_total_blocks     | 1         |

+————————-+———–+

8 rows in set (0.00 sec)
Nach dem Login kopieren


这里顺便解释下这个几个参数的作用:

Qcache_free_blocks:表示查询缓存中目前还有多少剩余的blocks,如果该值显示较大,则说明查询缓存中的内存碎片过多了,可能在一定的时间进行整理。

Qcache_free_memory:查询缓存的内存大小,通过这个参数可以很清晰的知道当前系统的查询内存是否够用,是多了,还是不够用,DBA可以根据实际情况做出调整。

Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。

Qcache_inserts: 表示多少次未命中然后插入,意思是新来的SQL请求在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。这样的情况的次数,次数越多,表示查询缓存应用到的比较少,效果也就不理想。当然系统刚启动后,查询缓存是空的,这很正常。

Qcache_lowmem_prunes:该参数记录有多少条查询因为内存不足而被移除出查询缓存。通过这个值,用户可以适当的调整缓存大小。

Qcache_not_cached: 表示因为query_cache_type的设置而没有被缓存的查询数量。

Qcache_queries_in_cache:当前缓存中缓存的查询数量。

Qcache_total_blocks:当前缓存的block数量。
下边我们测试下:

比如执行如下查询语句

mysql> select * from user where id = 2;

+—-+——-+

| id | name  |

+—-+——-+

|  2 | test2 |

+—-+——-+

1 row in set (0.02 sec)
Nach dem Login kopieren


然后执行show status like ‘%Qcache%',看看有什么变化:

mysql> show status like ‘%Qcache%';

+————————-+———–+

| Variable_name           | Value     |

+————————-+———–+

| Qcache_free_blocks      | 1         |

| Qcache_free_memory      | 134207264 |

| Qcache_hits             | 0         |

| Qcache_inserts          | 1         |

| Qcache_lowmem_prunes    | 0         |

| Qcache_not_cached       | 3         |

| Qcache_queries_in_cache | 1         |

| Qcache_total_blocks     | 4         |

+————————-+———–+

8 rows in set (0.00 sec)
Nach dem Login kopieren


对比前面的参数值,我们发现Qcache_inserts变化了。Qcache_hits没有变,下边我们在执行同样的查询

select * from user where id = 2,按照前面的理论分析:Qcache_hits应该等于1,而Qcache_inserts应该值不变(其他参数的值变化暂时不关注,读者可以自行测试),再次执行:
show status like ‘%Qcache%',看看有什么变化:

mysql> show status like ‘%Qcache%';

+————————-+———–+

| Variable_name           | Value     |

+————————-+———–+

| Qcache_free_blocks      | 1         |

| Qcache_free_memory      | 134207264 |

| Qcache_hits             | 1         |

| Qcache_inserts          | 1         |

| Qcache_lowmem_prunes    | 0         |

| Qcache_not_cached       | 4         |

| Qcache_queries_in_cache | 1         |

| Qcache_total_blocks     | 4         |

+————————-+———–+

8 rows in set (0.00 sec)
Nach dem Login kopieren


OK,果然跟我们分析的完全一致。



Das obige ist der detaillierte Inhalt vonAnalysieren Sie die Startmethode und die Parameter des MySQL-Cache (query_cache_size).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen PHPs Fähigkeiten zur Verarbeitung von Big-Data-Strukturen May 08, 2024 am 10:24 AM

Fähigkeiten zur Verarbeitung von Big-Data-Strukturen: Chunking: Teilen Sie den Datensatz auf und verarbeiten Sie ihn in Blöcken, um den Speicherverbrauch zu reduzieren. Generator: Generieren Sie Datenelemente einzeln, ohne den gesamten Datensatz zu laden, geeignet für unbegrenzte Datensätze. Streaming: Lesen Sie Dateien oder fragen Sie Ergebnisse Zeile für Zeile ab, geeignet für große Dateien oder Remote-Daten. Externer Speicher: Speichern Sie die Daten bei sehr großen Datensätzen in einer Datenbank oder NoSQL.

Wie optimiert man die MySQL-Abfrageleistung in PHP? Wie optimiert man die MySQL-Abfrageleistung in PHP? Jun 03, 2024 pm 08:11 PM

Die MySQL-Abfrageleistung kann durch die Erstellung von Indizes optimiert werden, die die Suchzeit von linearer Komplexität auf logarithmische Komplexität reduzieren. Verwenden Sie PreparedStatements, um SQL-Injection zu verhindern und die Abfrageleistung zu verbessern. Begrenzen Sie die Abfrageergebnisse und reduzieren Sie die vom Server verarbeitete Datenmenge. Optimieren Sie Join-Abfragen, einschließlich der Verwendung geeigneter Join-Typen, der Erstellung von Indizes und der Berücksichtigung der Verwendung von Unterabfragen. Analysieren Sie Abfragen, um Engpässe zu identifizieren. Verwenden Sie Caching, um die Datenbanklast zu reduzieren. Optimieren Sie den PHP-Code, um den Overhead zu minimieren.

Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Wie verwende ich MySQL-Backup und -Wiederherstellung in PHP? Jun 03, 2024 pm 12:19 PM

Das Sichern und Wiederherstellen einer MySQL-Datenbank in PHP kann durch Befolgen dieser Schritte erreicht werden: Sichern Sie die Datenbank: Verwenden Sie den Befehl mysqldump, um die Datenbank in eine SQL-Datei zu sichern. Datenbank wiederherstellen: Verwenden Sie den Befehl mysql, um die Datenbank aus SQL-Dateien wiederherzustellen.

Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Wie füge ich mit PHP Daten in eine MySQL-Tabelle ein? Jun 02, 2024 pm 02:26 PM

Wie füge ich Daten in eine MySQL-Tabelle ein? Mit der Datenbank verbinden: Stellen Sie mit mysqli eine Verbindung zur Datenbank her. Bereiten Sie die SQL-Abfrage vor: Schreiben Sie eine INSERT-Anweisung, um die einzufügenden Spalten und Werte anzugeben. Abfrage ausführen: Verwenden Sie die Methode query(), um die Einfügungsabfrage auszuführen. Bei Erfolg wird eine Bestätigungsmeldung ausgegeben.

So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 So beheben Sie den Fehler „mysql_native_password nicht geladen' unter MySQL 8.4 Dec 09, 2024 am 11:42 AM

Eine der wichtigsten Änderungen, die in MySQL 8.4 (der neuesten LTS-Version von 2024) eingeführt wurden, besteht darin, dass das Plugin „MySQL Native Password“ nicht mehr standardmäßig aktiviert ist. Darüber hinaus entfernt MySQL 9.0 dieses Plugin vollständig. Diese Änderung betrifft PHP und andere Apps

Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Wie verwende ich gespeicherte MySQL-Prozeduren in PHP? Jun 02, 2024 pm 02:13 PM

So verwenden Sie gespeicherte MySQL-Prozeduren in PHP: Verwenden Sie PDO oder die MySQLi-Erweiterung, um eine Verbindung zu einer MySQL-Datenbank herzustellen. Bereiten Sie die Anweisung zum Aufrufen der gespeicherten Prozedur vor. Führen Sie die gespeicherte Prozedur aus. Verarbeiten Sie die Ergebnismenge (wenn die gespeicherte Prozedur Ergebnisse zurückgibt). Schließen Sie die Datenbankverbindung.

Caching-Mechanismus und Anwendungspraxis in der PHP-Entwicklung Caching-Mechanismus und Anwendungspraxis in der PHP-Entwicklung May 09, 2024 pm 01:30 PM

In der PHP-Entwicklung verbessert der Caching-Mechanismus die Leistung, indem er häufig aufgerufene Daten vorübergehend im Speicher oder auf der Festplatte speichert und so die Anzahl der Datenbankzugriffe reduziert. Zu den Cache-Typen gehören hauptsächlich Speicher-, Datei- und Datenbank-Cache. In PHP können Sie integrierte Funktionen oder Bibliotheken von Drittanbietern verwenden, um Caching zu implementieren, wie zum Beispiel Cache_get() und Memcache. Zu den gängigen praktischen Anwendungen gehören das Zwischenspeichern von Datenbankabfrageergebnissen zur Optimierung der Abfrageleistung und das Zwischenspeichern von Seitenausgaben zur Beschleunigung des Renderings. Der Caching-Mechanismus verbessert effektiv die Reaktionsgeschwindigkeit der Website, verbessert das Benutzererlebnis und reduziert die Serverlast.

Wie erstelle ich eine MySQL-Tabelle mit PHP? Wie erstelle ich eine MySQL-Tabelle mit PHP? Jun 04, 2024 pm 01:57 PM

Das Erstellen einer MySQL-Tabelle mit PHP erfordert die folgenden Schritte: Stellen Sie eine Verbindung zur Datenbank her. Erstellen Sie die Datenbank, falls sie nicht vorhanden ist. Wählen Sie eine Datenbank aus. Tabelle erstellen. Führen Sie die Abfrage aus. Schließen Sie die Verbindung.

See all articles