Startseite » wie man » Beschleunigen Sie Ihre Website mit MySQL Query Caching

    Beschleunigen Sie Ihre Website mit MySQL Query Caching

    Eine der besten Möglichkeiten, Ihre Webanwendung zu beschleunigen, besteht darin, das Abfragen-Caching in Ihrer Datenbank zu aktivieren. Diese Caches speichern häufig verwendete SQL-Abfragen im Speicher für den sofortigen Zugriff durch die nächste Seite, auf der dieselbe Anforderung erfolgt.

    Der Grund, warum diese Methode so leistungsfähig ist, ist, dass Sie keine Änderungen an Ihrer Webanwendung vornehmen müssen, sondern nur ein wenig Speicherplatz opfern müssen. Dies wird nicht alle Ihre Probleme lösen, aber es kann definitiv nicht schaden.

    Hinweis: Wenn Ihre Anwendung häufig Tabellen aktualisiert, wird der Abfrage-Cache ständig gelöscht, und Sie werden davon nicht viel profitieren. Dies ist ideal für eine Anwendung, die meistens mit der Datenbank liest, wie beispielsweise ein WordPress-Blog. Dies funktioniert auch nicht, wenn Sie mit Shared Hosting arbeiten.

    Aktivieren Sie die Zwischenspeicherung bei laufendem Server

    Als Erstes sollten Sie sicherstellen, dass für Ihre Installation von MySQL tatsächlich Unterstützung für die Abfragezwischenspeicherung verfügbar ist. Die meisten Distributionen tun dies, aber Sie sollten es trotzdem prüfen.

    Sie sollten diesen Befehl von Ihrer MySQL-Konsole aus ausführen, die Ihnen mitteilt, ob Abfrage-Caching verfügbar ist.

    mysql> zeige Variablen wie 'have_query_cache'; + ------------------ + ------- + | Variablenname | Wert | + ------------------ + ------- + | hab_query_cache | JA | +------------------+-------+ 

    Verwechseln Sie dies nicht damit, dass die Abfragezwischenspeicherung tatsächlich aktiviert ist, da die meisten Hostinganbieter dies standardmäßig nicht aktivieren. Seltsamerweise wurde meine Ubuntu Feisty-Installation bereits aktiviert…

    Als Nächstes müssen wir überprüfen, ob die Abfragezwischenspeicherung aktiviert ist. Wir müssen mehr als eine Variable prüfen, also können wir dies alles auf einmal tun, indem Sie nach der Variablen query% suchen.

    mysql> zeige Variablen wie 'query%'; + ------------------------------ + --------- + | Variablenname | Wert | + ------------------------------ + --------- + | 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 | +------------------------------+---------+ 

    Hier sind die wichtigsten Punkte in der Liste und was sie bedeuten:

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

    Wenn der Wert für query_cache_size auf 0 gesetzt ist oder Sie ihn nur ändern möchten, müssen Sie den folgenden Befehl ausführen, wobei zu beachten ist, dass der Wert in Byte ist. Wenn Sie dem Cache beispielsweise 8 MB zuweisen möchten, verwenden Sie als Wert 1024 * 1024 * 8 = 8388608.

    SET GLOBAL query_cache_size = 8388608;

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

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

    Wie stellen wir nun fest, ob es tatsächlich funktioniert? Mit dem Befehl SHOW STATUS können Sie alle Variablen abrufen, die mit "Qc" beginnen, um zu sehen, was unter der Haube abläuft.

    mysql> SHOW STATUS LIKE 'Qc%'; + ------------------------- + -------- + | Variablenname | Wert | + ------------------------- + -------- + | 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 Reihen im Satz (0,00 Sek.) 

    Sie werden in den Statistiken feststellen, dass ich viel freien Speicher habe. Wenn auf Ihrem Server viele Lowmem-Pflaumen angezeigt werden, müssen Sie möglicherweise diesen Wert erhöhen, aber ich würde nicht zu viel Speicher für das Abfragen von Web-Servern aufwenden. Sie müssen Speicher für Apache, PHP, Ruby oder was auch immer Sie verwenden.

    Aktivieren Sie in der Konfigurationsdatei

    Wenn Sie möchten, dass diese Änderungen einen Neustart oder Neustart des MySQL-Servers überstehen, müssen Sie sie in Ihre /etc/mysql/my.cnf-Konfigurationsdatei für MySQL aufnehmen. Beachten Sie, dass sich die Installation möglicherweise an einem anderen Ort befindet.

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

    query_cache_size = 268435456 query_cache_type = 1 query_cache_limit = 1048576

    Durch das Abfragen-Caching kann die Geschwindigkeit Ihrer Webanwendung erheblich verbessert werden, insbesondere wenn Ihre Anwendung meistens Lesevorgänge durchführt. Überwachen Sie den Status mit den oben genannten Methoden und sehen Sie, wie er im Zeitablauf funktioniert.