Seite wählen

MySQL Query-Cache Hints

von | Jul 8, 2011 | MySQL

Vor einigen Jahren (ja das stimmt wirklich) habe ich mal einen kurzen Blog-Post zum Thema MySQL Query-Cache geschrieben. Leider ist die Verwendung des Query-Cache nicht wirklich unumstritten und auch nicht in jeder Umgebung ein problemlösendes Mittel. Neben Fragmentierung des Caches und einigen Limitierungen bezüglich gecachter Operationen kann gerade die interne Pflege des Caches ein Problem sein. Ursache hierfür ist das bei Aktualisierung der Basistabellen auch alle sich darauf beziehenden Cache-Einträge gelöscht werden. Dies ist Aufwändig und führt in Umgebungen mit hoher Transaktionsdichte oft dazu, dass nahezu nie ein Ergebnis aus dem Cache kommt aber trotzdem alle Ergebnisse einer Select-Abfrage in den Cache gelegt und dort verwaltet werden.
Die spannenden Hints dafür sind SQL_CACHE und SQL_NO_CACHE mit denen sich das Verhalten des Query-Caches auf Basis von Einzelstatements steuern lässt.
Ein Beispiel:

SELECT /*! SQL_NO_CACHE */ product_id, product_name, product_price from products;

Mit diesem Hint kann man die Ablage des Ergebnisses im Cache verhindern und ggf. wirkungslose Caching-Last vom System nehmen. In die andere Richtung funktioniert das natürlich auch 🙂

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startete er früher das wöchentliche Lexware-Backup, welches er nun endlich automatisiert hat. So investiert er seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinen beiden Söhnen und seiner Tochter.

0 Kommentare

Einen Kommentar abschicken

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Mehr Beiträge zum Thema MySQL

Alle User in MySQL anzeigen

Oftmals wachsen Datenbankinstallationen im Laufe der Zeit und man legt immer wieder für neue Projekte neue Datenbanknutzer an. Um hier den Überblick zu behalten, zeige ich kurz, wie man sich die jeweiligen Nutzer anzeigen lassen kann. Voraussetzungen: Command...

Monitor das Monitoring_by_ssh

Hellow, heute möchte ich euch zeigen, wie man schnell und einfach mit Icinga 2 seine bestehende Icinga 2 Infrastruktur monitoren kann. Jeder der sich damit schon mal befasst hat, wird schnell zu dem Ergebnis kommen: "Hey warte mal den Master kann ich ja nicht auf den...

rsync und was dann?

Diese Woche hatte ich die zweifelhafte Ehre die mit 1,6TB schon etwas größere MySQL-Datenbank (MariaDB) eines Kunden auf den zweiten Datenbankknoten zu spielen. Dabei war die Herausforderung das die ganze Show außerhalb der Geschäftszeiten von 17:30 Uhr bis max. 5:00...