Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Anleitung Entwicklung Datenbanken

Der MySQL Query-Cache

Mitglied: Frank

Frank (Level 5) - Jetzt verbinden

13.11.2003, aktualisiert 25.03.2011, 100529 Aufrufe, 4 Kommentare

Kurz gesagt: Der MySQL Query-Cache beschleunigt in den meißten Fällen die Abfragen. Er ist ab der Version 4 von MYSQL enthalten.

In dem Query-Cache werden Querys und deren Ergebnismengen gespeichert. Wenn das gleiche Statement mehrmals benutzt wird und die betroffenen Datensätze sich nicht verändert haben, wird das Ergebnis aus dem Cache geliefert. Bei einem kleinen Cache kann es allerdings sehr schnell vorkommen, dass ältere Statements überschrieben werden.
In Szenarien, in denen häufig auf Bestandsdaten zugegriffen wird, kann dieser Cache enmorme Geschwindigkeitssteigerungen bewirken. Besonders bei komplexen Statements kann der Query-Cache sehr wirkungsvoll sein, da das zeitaufwendige Parsen der Statements entfällt. Bei Bewegungsdaten, dürften die Geschwindigkeitssteigerungen ehere gering sein.


Die Cache-Parameter:

Um mit den Cache-Parametern herumspielen zu können, müssen Sie sich mit 'root'-Rechten einloggen. Zunächst identifizieren Sie die eingestellten Optionen der MySQL Datenbank. Sie können dazu einfach 'show variables' eingeben. Allerdings erhalten Sie dabei eine Riesenliste, und müssten die interessanten Werte mühsam heraussuchen. Einfacher geht es mit dem Mysql-Befehl:
01.
mysql> show variables like '%cache%';
Das Ergebins sieht bei den meißten dann so aus:
01.
query_cache_limit     | 1048576    | 
02.
query_cache_size      | 0          | 
03.
query_cache_type      | ON         
Als default query_cache_size Wert steht dort 0. Ihr Cache ist also noch nicht eingeschaltet.

Mit dem Wert 'query_cache_size' reservieren Sie in MySQL einen bestimmten Speicherbereich, um einmal beantwortete 'select'-Anfragen temporär zwischenzuspeichern. Das bringt ab der zweiten Abfrage ganz massiv schnellere Resultate, weil die Informationen direkt aus dem Speicher kommen.

Schalten Sie den Cache nun in der Laufzeit ein (die Größe ist hier in Byte angegeben, kann aber auch in MB angegeben werden z.B. 100M):
01.
mysql> set global query_cache_size = 10000000;
Zum Testen nun den Befehl:
01.
mysql> show variables like 'query_cache_size';
Die query_cache_size steht jetzt auf etwa 9999360 Bytes. Die Differenz von einigen Bytes sollte Sie nicht weiter beunruhigen, letztlich braucht die Verwaltung auch noch einige Bytes.

Mit dem Befehl:
01.
mysql> FLUSH QUERY CACHE; 
initialisieren Sie den Cache auf Ihre aktuellen Daten. Der Befehl bewirkt eine defragmentation des Caches und kann jederzeit zur Optimierung ausgeführt werden.

Mit dem Befehl:
01.
mysql> RESET QUERY CACHE;
löschen Sie alle gespeicherten Cache Ergebnisse aus den Query-Cache.


Permanente Eintrag in die Mysql-Konfigurationsdatei: my.cnf

In Ihrer Laufzeitumgebung ist der Query-Cache nun erfolgreich eingeschaltet. Fehlt nur noch der permanente Eintrag in die Datei my.cnf (diese Konfigurations-Datei finden sie meist im "/etc/ Verzeichnis Ihrer Linux Distribution, unter Ubuntu z.B. im Verzeichnis /etc/mysql/), damit die Einstellung nach einem Neustart der MySQL auch weiterhin bestehen bleiben.

Tragen sie dazu in die MySQL-Konfigurationsdatei: "/etc/my.cnf" die Zeile: "query_cache_size=128M" und "query_cache_type = 1" ein. Überprüfen Sie den Eintrag danach per Mysql-Console mit dem Befehl "show variables like 'query_cache_size';". Fertig.
01.
query_cache_limit  = 16M  
02.
query_cache_size  = 128M  
03.
query_cache_type = 1 
Man kann die Effiezienz des Query-Cache auch sehr leicht bewerten. Mit dem Befehl:
01.
mysql> SHOW STATUS LIKE 'Qcache%';; 
bekommen sie alle Laufzeit-Informationen zum Query-Cache angezeigt: (hier ein Beispiel unseres gerade frisch aktivierten Query-Cache)
01.
Qcache queries in cache   2   
02.
Qcache inserts   3888   
03.
Qcache hits   1797   
04.
Qcache lowmem prunes   3376   
05.
Qcache not cached   185   
06.
Qcache free memory   924784   
07.
Qcache free blocks   9   
08.
Qcache total blocks   24   
09.
 
Einen weiteren interessanten (kostenpflichtigen) Artikel dazu finden Sie auch unter der IX Webseite: http://www.heise.de/ix/artikel/2003/02/040/

Die MySQL Dokumentation (Version 5.1) finden Sie unter dem Link: http://dev.mysql.com/doc/refman/5.1/de/query-cache.html

Viel Spaß noch beim Optimieren. Sie können uns und den Lesern ja mal Ihrer Erfahrungen über die Vor- oder Nachteile des Query-Caches schreiben. Auf Feedback sind wir immer neugierig. [FS]
Mitglied: Frank
24.02.2005 um 14:51 Uhr
Kleine Ergänzung:

Mann kann den Query-Cache auch mit:
01.
mysql>SHOW VARIABLES LIKE 'have_query_cache'
prüfen.

Um alle Ergebnisse anzuzeigen:

01.
mysql> SHOW STATUS LIKE 'Qcache%'; 
02.
+-------------------------+--------+ 
03.
| Variable_name           | Value  | 
04.
+-------------------------+--------+ 
05.
| Qcache_free_blocks      | 36     | 
06.
| Qcache_free_memory      | 138488 | 
07.
| Qcache_hits             | 79570  | 
08.
| Qcache_inserts          | 27087  | 
09.
| Qcache_lowmem_prunes    | 3114   | 
10.
| Qcache_not_cached       | 22989  | 
11.
| Qcache_queries_in_cache | 415    | 
12.
| Qcache_total_blocks     | 912    | 
13.
+-------------------------+--------+
Bitte warten ..
Mitglied: Frank
26.05.2007 um 12:33 Uhr
Hi @all,

eine paar Änderungen:

Tragen sie dazu in die MySQL Konfigdatei: "/etc/my.cnf" die Zeile: "set-variable =
query_cache_size=1000000" ein.

seit der MySQL Version 5 kann man in der "/etc/my.cnf" das "set-variable =" weglassen (ich habe es im Original-Beitrag schon korrigiert).
Es reicht also:
01.
query_cache_limit  = 16M  
02.
query_cache_size  = 128M  
03.
query_cache_type = 1 
Hier die Erklärung zu den zusätzlichen Parameter:
01.
query_cache_limit  = max. Größe für einen einzelnen Query Aufruf, der in den Cache aufgenommen wird. 
02.
query_cache_size  = Wie viel Speicher der gesamte Query-Cache belegen darf 
03.
query_cache_type = Query-Cache ein (1) der (0) ausschalten (2 per SQL aktivieren (SQL_CACHE) /deaktivieren (SQL_NO_CACHE) )
Bitte warten ..
Mitglied: 49880
21.06.2007 um 11:07 Uhr
Hallo,

ich habe meine my.cnf folgendermaßen geändert.
01.
query_cache_limit  = 16M  
02.
query_cache_size  = 128M  
03.
query_cache_type = 1 
Der Cache funktioniert soweit auch. Allerdings ist der Cache nach einem Neustart wieder leer. Ist das normal? Kann man das so konfigurieren, das der Cache erhalten bleibt?

Vielen Dank für das Tut und Viele Grüße
bitverdreher
Bitte warten ..
Mitglied: bennos
16.02.2008 um 16:25 Uhr
Ja das ist normal.

Der Query Cache liegt im RAM und ist logischerweise nach einem reboot leer.

als ergänzung kann ich immer empfehlen
http://www.mysqlperformanceblog.com

gute infos über performance einzelner STorage Engines, sowie benchmark und Standard Konfig von DB's.

bennos
Bitte warten ..
Ähnliche Inhalte
PHP
AutoComplete mit PHP MySQL jQuery jQueryUI JSON
Anleitung von GuenniPHP2 Kommentare

Auf die Frage"Wie kann man nach Eingabe in einem Textfeld Suchvorschläge anzeigen oder ein Select-Feld füllen", oder ähnlichen Fragen, ...

Windows Server
Microsoft Web Platform Installer 5.0 - Gängige Webserver-Dienste (PHP - MySQL - CMS - Blogs etc.) schnell und einfach installiert
Tipp von colinardoWindows Server5 Kommentare

Ein Tipp für alle die das Tool noch nicht kennen. Es bietet einen Assistenten zur Installation von gängigen Webserver-Diensten ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 3 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit12 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...

Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall9 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...