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
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.
quelle