Optimierung von MySQL query_cache_size

7

Ist meine query_cache_size zu groß?

mysql> SHOW VARIABLES LIKE '%query_cache%';
+------------------------------+-----------+
| Variable_name                | Value     |
+------------------------------+-----------+
| have_query_cache             | YES       |
| query_cache_limit            | 4194304   |
| query_cache_min_res_unit     | 4096      |
| query_cache_size             | 201326592 |
| query_cache_type             | ON        |
| query_cache_wlock_invalidate | OFF       |
+------------------------------+-----------+
6 rows in set (0.00 sec)

mysql> SHOW STATUS LIKE '%qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 26643     |
| Qcache_free_memory      | 83199168  |
| Qcache_hits             | 327606097 |
| Qcache_inserts          | 19231291  |
| Qcache_lowmem_prunes    | 10628400  |
| Qcache_not_cached       | 36215     |
| Qcache_queries_in_cache | 92389     |
| Qcache_total_blocks     | 212195    |
+-------------------------+-----------+
8 rows in set (0.00 sec)

mysqlreport says:

__ Query Cache _________________________________________________________
Memory usage  109.13M of 192.00M  %Used:  56.84
Block Fragmnt  12.55%
Hits          327.76M   812.1/s
Inserts        19.24M    47.7/s
Insrt:Prune    1.81:1    21.3/s
Hit:Insert    17.04:1
Kidrobot
quelle

Antworten:

7

Sie können die Verwendung Ihres Abfragecaches mithilfe der folgenden Formeln analysieren:

Aktuelle Größe im Vergleich zur maximal verfügbaren Größe:

Um den prozentualen Nutzungswert für den Abfragecache zu berechnen, können Sie die folgende Formel verwenden:

((query_cache_size-Qcache_free_memory)/query_cache_size)*100

Die Trefferquote im Abfrage-Cache:

Die prozentuale Trefferquote im Cache kann wie folgt berechnet werden:

((Qcache_hits/(Qcache_hits+Qcache_inserts+Qcache_not_cached))*100)

egDie Verwendung von 33% besagt, dass von allen ausgeführten Select-Anweisungen 33% vom Cache erfüllt werden können und daher nicht erneut ausgeführt werden müssen.

Treffer zum Einfügen von Verhältnis und Einfügen zum Beschneiden

Diese beiden Verhältnisse werden nach den folgenden zwei Formeln berechnet:

  1. Qcache_hits/Qcache_inserts
  2. Qcache_inserts/Qcache_prunes

Weisen Sie NICHT zu viel Speicher zu

Die Verwendung von weniger Speicher als verfügbar kann die Leistung verringern. Die Verwendung von mehr Speicher als verfügbar kann jedoch zu einer schlechteren Leistung oder sogar zu Abstürzen führen. Eine allgemeine Formel für die Ressourcenzuweisung lautet:

memory=key_buffer+(sort_buffer_size+read_buffer_size)*max_connections
Gopinath
quelle
Abfrage-Cache-Trefferquote = 94%, was ziemlich effizient erscheint. Das Verhältnis von Einsätzen zu Pflaume beträgt jedoch 1,8: 1. Bedeutet dies, dass die Größe nicht groß genug ist?
Kidrobot
Ihre Nutzung des Abfrage-Cache scheint gut zu sein. Die Trefferquote 1,8: 1 ist eine durchschnittliche Trefferquote, bei der im Vergleich zu Löschungen und Aktualisierungen mehr Einfügungen angezeigt werden.
Gopinath
5

Es stellte sich heraus, dass die Größe des Abfragecaches nicht zu groß war. Stattdessen wurden Abfragen nicht zwischengespeichert, da query_cache_min_res_unit zu groß war.

Durch Reduzieren auf 1024 näher an der durchschnittlichen Abfragegröße musste ich schließlich query_cache_size erhöhen und erhalte nun Folgendes.

Memory usage  249.07M of 256.00M  %Used:  97.29
Block Fragmnt   1.05%
Hits           12.34M   789.6/s
Inserts       574.80k    36.8/s
Insrt:Prune    4.72:1    29.0/s
Hit:Insert    21.47:1
Kidrobot
quelle