MySQL Performance mit Caching verbessern – Query Cache und Buffer Pool

Caching ist einer der effektivsten Hebel für MySQL-Performance. Richtig konfiguriert kann es die Datenbanklatenz um Größenordnungen reduzieren, ohne an der Abfragenlogik oder am Schema zu ändern.

InnoDB Buffer Pool: Der wichtigste Cache

# my.cnf / my.ini
[mysqld]
# Buffer Pool auf 70-80% des verfügbaren RAM setzen
innodb_buffer_pool_size = 4G

# Multiple Buffer Pool Instances (für Parallelität)
innodb_buffer_pool_instances = 4

# Status prüfen
SHOW STATUS LIKE 'Innodb_buffer_pool%';

Buffer Pool Hit Rate analysieren

SELECT
    ROUND(100 * (1 - (
        (SELECT variable_value FROM information_schema.global_status
         WHERE variable_name = 'Innodb_buffer_pool_reads') /
        (SELECT variable_value FROM information_schema.global_status
         WHERE variable_name = 'Innodb_buffer_pool_read_requests')
    )), 2) AS buffer_pool_hit_rate_percent;
-- Ziel: >99%

Query Cache (MySQL 5.x)

# Query Cache (MySQL 5.x, in 8.0 entfernt)
query_cache_type = 1
query_cache_size = 256M
query_cache_limit = 2M

# Effektivität prüfen
SHOW STATUS LIKE 'Qcache%';

Externe Caching-Schicht: Redis/Memcached

Für hochfrequente, identische Abfragen ist ein externer Cache wie Redis oder Memcached die ultimative Lösung. Das Ergebnis einer teuren Query wird für X Sekunden im Memory-Cache gespeichert – MySQL wird gar nicht erst angefragt. Ideal für Session-Daten, Produktlisten und andere read-heavy Szenarien.