/ / Beschleunigen Sie Ihre Website mit MySQL Query Caching

Beschleunigen Sie Ihre Website mit MySQL Query Caching

Eine der besten Möglichkeiten, um Ihr Web zu beschleunigenDie Anwendung besteht darin, das Query-Caching in Ihrer Datenbank zu aktivieren, bei dem häufig verwendete SQL-Abfragen im Speicher zwischengespeichert werden, damit auf der nächsten Seite, auf der dieselbe Anfrage gestellt wird, praktisch sofort darauf zugegriffen werden kann.

Der Grund, warum diese Methode so mächtig ist, ist, dass SieSie müssen keine Änderungen an Ihrer Webanwendung vornehmen, sondern nur ein wenig Speicherplatz opfern. Dies wird nicht alle Probleme beheben, kann aber definitiv nicht schaden.

Hinweis: Wenn Ihre Anwendung Tabellen häufig aktualisiert, wird der Abfrage-Cache ständig geleert, und Sie werden davon keinen großen Nutzen ziehen. Dies ist ideal für eine Anwendung, die hauptsächlich Daten aus der Datenbank liest, z. B. ein WordPress-Blog. Dies funktioniert auch dann nicht, wenn Sie Shared Hosting verwenden.

Aktivieren Sie die Zwischenspeicherung bei laufendem Server

Stellen Sie als Erstes sicher, dass Ihre MySQL-Installation tatsächlich Unterstützung für das Query-Caching bietet. Die meisten Distributionen tun dies, aber Sie sollten es trotzdem überprüfen.

Sie möchten diesen Befehl über Ihre MySQL-Konsole ausführen, um zu erfahren, ob Query Caching verfügbar ist.

mysql> show variables like 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

Verwechseln Sie dies nicht mit dem Query-Cachingist tatsächlich aktiviert, da die meisten Hosting-Anbieter dies nicht standardmäßig aktivieren. Seltsamerweise hatte meine Ubuntu Feisty-Installation es bereits aktiviert ...

Als Nächstes müssen wir überprüfen, ob das Query-Caching aktiviert ist. Wir müssen mehr als eine Variable prüfen, daher können wir auch alles auf einmal tun, indem wir nach der Variablenabfrage suchen%

mysql> show variables like 'query%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| query_alloc_block_size       | 8192    |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 8388608 |
| query_cache_type             | ON      |
| query_cache_wlock_invalidate | OFF     |
| query_prealloc_size          | 8192    |
+------------------------------+---------+

Die wichtigsten Elemente in der Liste und ihre Bedeutung:

  • query_cache_size - Dies ist die Größe des Caches in Bytes. Wenn Sie diesen Wert auf 0 setzen, wird das Caching deaktiviert.
  • query_cache_type - Dieser Wert muss auf ON oder 1 gesetzt sein, damit das Query-Caching standardmäßig aktiviert wird.
  • query_cache_limit - Dies ist die maximale Größe der Abfrage (in Byte), die zwischengespeichert wird.

Wenn der query_cache_size-Wert auf 0 gesetzt ist oder SieWenn Sie es nur ändern möchten, müssen Sie den folgenden Befehl ausführen und dabei berücksichtigen, dass der Wert in Byte angegeben ist. Wenn Sie beispielsweise dem Cache 8 MB zuweisen möchten, verwenden wir 1024 * 1024 * 8 = 8388608 als Wert.

SET GLOBAL query_cache_size = 8388608;

Ebenso können die anderen Optionen mit derselben Syntax festgelegt werden:

SET GLOBAL query_cache_limit = 1048576;
SET GLOBAL query_cache_type = 1;

Wie können wir nun feststellen, ob es tatsächlich funktioniert? Mit dem Befehl SHOW STATUS können Sie alle Variablen abrufen, die mit „Qc“ beginnen, um einen Blick darauf zu werfen, was unter der Haube vor sich geht.

mysql> SHOW STATUS LIKE 'Qc%';
+-------------------------+--------+
| Variable_name           | Value  |
+-------------------------+--------+
| Qcache_free_blocks      | 65     |
| Qcache_free_memory      | 201440 |
| Qcache_hits             | 18868  |
| Qcache_inserts          | 2940   |
| Qcache_lowmem_prunes    | 665    |
| Qcache_not_cached       | 246    |
| Qcache_queries_in_cache | 492    |
| Qcache_total_blocks     | 1430   |
+-------------------------+--------+
8 rows in set (0.00 sec)

Sie werden in den Statistiken feststellen, dass ich reichlich davon habeFreier Speicher übrig. Wenn Ihr Server viele LowMem-Pflaumen aufweist, müssen Sie diesen Wert möglicherweise erhöhen, aber ich würde nicht zu viel Speicher für das Zwischenspeichern von Abfragen für einen Webserver aufwenden. Sie müssen den Speicher für Apache, PHP, Ruby oder was auch immer Sie verwenden.

In Konfigurationsdatei aktivieren

Wenn Sie möchten, dass diese Änderungen einen Neustart überstehen, oderNach dem Neustart des MySQL-Servers müssen Sie diese in Ihre Konfigurationsdatei /etc/mysql/my.cnf für MySQL einfügen. Beachten Sie, dass es sich möglicherweise an einem anderen Ort in Ihrer Installation befindet.

Öffnen Sie die Datei mit einem Texteditor im Sudo- oder Root-Modus und fügen Sie diese Werte hinzu, falls sie noch nicht in der Datei vorhanden sind. Wenn sie existieren, kommentieren Sie sie einfach aus.

query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576

Das Zwischenspeichern von Abfragen kann die Geschwindigkeit Ihrer Webanwendung erheblich verbessern, insbesondere wenn Ihre Anwendung hauptsächlich Lesevorgänge ausführt. Überwachen Sie den Status mithilfe der oben beschriebenen Methoden und sehen Sie, wie er im Zeitverlauf funktioniert.