Mysql cache utilizzo e tuning

29/06/2006 by - Mysql

Utilizzo e tuning della Query Cache, pochi appunti scritti e condivisi

Mysql implementa un meccanismo per cashare i risultati delle query al fine di poterli riutilizzare senza interrogare di nuovo il DB. Questo meccanismo e’ estremamente utile quando una appz utilizza massivamente le stesse query. Non esiste un configuerazione ottimale in generale, vi invito ad utilizzare quella di default e iniziare tuning più avanti.

Parametri di configurazione:

Il file di configurazione my.cnf contiene le direttive per settare tutte le opzioni che interagiscono col meccanismo di cache.

Prestare attenzione a query_cache_size e query_cache_type.

have_query_cache
MAN: Indica al server di supportare il meccanismo di caching delle query
TYPE: boolean (YES o NO)
VERSION: a partire dalla 4.0.2

query_cache_limit

MAN: dimensione massima del risultato della query ( detto record set o result set) per essere ammessa in cache
TYPE: intero espresso in MB
VERSION: a partire dalla 4.0.1

La query cache e’ stata introdotta per poter “cachare” il numero maggiore possibile di query, non il record set delle query piu’ corpose. Dovrebbe essere settato ad un valore relativamente basso

query_cache_min_res_unit

MAN: dimensione minima del record set per essere ammesso in cache
TYPE: espresso in KB
VERSION: a partire dalla 4.0.1
query_cache_size

MAN: memoria dedicata alla query cache
TYPE: intero espresso in MB
VERSION: a partire dalla 4.0.1

Se il valore impostato e’ 0 il caching e’ disabilitato. Se il valore e’ > 0 ma la direttiva query_cache_type e’ 0 oppure OFF, la memoria dedicata al caching viene utilizzata ma non viene effettivamente letta dal mysql

query_cache_type

MAN: specifica lo stato della query cache
TYPE: intero (0,1,2)
VERSION: a partire dalla 4.0.3

0-> Non viene messo in cache nulla, ma la memoria viene lo stesso dedicata

1-> Se e’ impostato a 1 i risultati della query con dimensione minore di query_cache_limit vengono cachati, a meno che la query non contenga la direttiva SQL_NO_CACHE

2-> Se e’ impostato a 2 i risultati della query con dimensione minore di query_cache_limit vengono cachati, a meno che la query contenga la direttiva SQL_CACHE

query_cache_wlock_invalidate

MAN:Se le tabelle interrogate stanno subendo operazioni e sono in stato di “lock” settando questo parametro a 1 i risultati in cache vengono eliminati e non si ha il rischio di ottenere risultati non piu’ validi. Questo è un parametro specifico per DB MyISAM
TYPE: boolean(0,1)
VERSION: a partire dalla 4.0.19

Come abilitare la Query Cache?

Per abilitare la cache query basta settare :

query_cache_type a 1 oppure 2
query_cache_size > 0

E’ importante settare correttamente entrambi i parametri, altrimenti si rischia di dedicare memoria che non verra’ utilizzata.

Mysql necessita di un minimo di 40Kb di memoria per poter avviare il meccanismo di cache. Se non ce’ abbastanza memoria nel file di log viene inserito un warning

Tuning Query Cache

Qualche query da utilizzare

FLUSH QUERY CACHE > deframmenta la struttura della memoria, non elimina nessuna query nella cache

RESET QUERY CACHE > svuota la cache

SHOW STATUS LIKE ‘qcache_%’ > per vedere le statistiche

Qcache_lowmem_prunes -> contiene il numero di query e results sets rimossi dalla cache per far posto a nuovi dati.
Per verificare in generale l’efficienza della cache query si dovrebbe far riferimento a quel valore, se cresce costantemente nel tempo la cache memory non sta fornendo un servizio utile ai fini della velocita’ e dovrebbe essere disabilitata, o i parametri diversamente settati in base al peso delle query più comuni, alla potenza della macchina..
Se i valori di Qcache_hits e Qcache_lowmem_prunes crescono rapidamente, bisognerebbe aumentare la query_cache_size

Qcache_not_cached indica il numeri di query eseguite ma non messe in cache

In generale e’ dovuto al valore superato di query_cache_limit.

Aumentare la query_cache_limit puo’ essere utile, bisogna pero’ considerare il rapporto fra Qcache_hits e Qcache_lowmem_prunes, se scende e’ opportuno farlo.

Controllate quotidianamente i valori “statistici” e fate numerose prove prima di definire delle linee guida per la configurazione dei parametri di tuning.



Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.