2010-04-11 9 views
10

Die mysqltuner.pl Skript mir die folgende Empfehlung gibt:Tuning Empfehlungen von mysqltuner.pl: query_cache_limit

query_cache_limit (> 1M, or use smaller result sets) 

Und MySQL Statusausgang zeigt:

mysql> SHOW STATUS LIKE 'Qcache%'; 
+-------------------------+------------+ 
| Variable_name   | Value  | 
+-------------------------+------------+ 
| Qcache_free_blocks  | 12264  | 
| Qcache_free_memory  | 1001213144 | 
| Qcache_hits    | 3763384 | 
| Qcache_inserts   | 54632419 | 
| Qcache_lowmem_prunes | 0   | 
| Qcache_not_cached  | 6656246 | 
| Qcache_queries_in_cache | 55280  | 
| Qcache_total_blocks  | 122848  | 
+-------------------------+------------+ 
8 rows in set (0.00 sec) 

Aus dem Statusausgang oben, wie kann ich beurteilen, ob oder nicht die vorgeschlagene Erhöhung in query_cache_limit benötigt wird?

Antwort

18

Ihre beste Wette ist es, eine Art Testumgebung einzurichten, die eine realistische (durch Ihr Szenario definierte) Belastung Ihrer Datenbank ausführt und dann diesen Test mit verschiedenen Einstellungen für MySql ausführt. Das Tuning ist eine solche Kunst für sich, dass es sehr schwierig ist, eine allumfassende Antwort zu geben, ohne genau Ihre Bedürfnisse zu kennen.

Von http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html:

Die Qcache_free_memory Zähler bietet einen Einblick in die freien Speicher-Cache. Niedrige beobachtete Mengen im Vergleich zum Gesamtwert , die für den Cache reserviert sind, können einen zu kleinen Cache anzeigen, der behoben werden kann, indem die globale Variable query_cache_size geändert wird.

Qcache_hits und Qcache_inserts zeigt die Anzahl der Male eine Abfrage aus dem Cache bedient wurde und wie viele Anfragen wurden in den Cache eingefügt. Niedrige Verhältnisse von Treffern zu Einfügungen zeigen kleine Wiederverwendung der Wiederverwendung an oder eine zu niedrige Einstellung der query_cache_limit, die zu dient, regieren den RAM, der jedem einzelnen Abfrage-Cache-Eintrag gewidmet wird. Große Abfrageergebnissätze erfordern größere Einstellungen dieser Variablen.

Ein weiterer Indikator für schlechte Wiederverwendung von Abfragen ist ein steigender Qcache_lowmem_prunes Wert. Dies gibt an, wie oft MySQL Abfragen aus dem Cache entfernen musste, um für eingehende Anweisungen zu verwenden. Weitere Gründe für eine zunehmende Zahl von Qcache_lowmem_prunes sind ein untermaßigen Cache, der die benötigte Menge von SQL-Anweisungen nicht halten kann und Ergebnismengen und Speicherfragmentierung im Cache, die gelindert werden, indem ein FLUSH QUERY CACHE Ausgabe Erklärung. Sie können alle Abfragen mit dem RESET QUERYCACHE Befehl aus dem Cache entfernen.

Der Qcache_not_cached Zähler liefert Einblick in die Anzahl der Anweisungen gegen MySQL ausgeführt, die nicht zwischenspeicherbar waren, entweder aufgrund wobei ein Nicht-SELECT-Anweisung oder ausdrücklich von Eintrag mit einem SQL_NO_CACHE Hinweis gesperrt ist.

Ihre Treffer-to-Einsätze ist Verhältnis etwas wie 1.15 oder 6%, so sieht es aus wie Sie Ihre Einstellungen mit etwas Feinabstimmung tun könnten (obwohl, wie gesagt, du bist der beste Richter davon, wie Sie kenne deine Anforderungen am besten).