Database  »  Articoli  »  MySQL 

Caching in un database MySQL

di: Andrea Cristaudo     05 Dicembre 2006

Un server MySQL, pur non avendo ancora il livello di complessità di soluzioni tipo Oracle o PostgreSQL, necessita di impostazioni fini e variegate. Queste configurazioni si possono impostare tramite il file di configurazione di MySQL, tramite una query o tramite un software appositamente progettato.

Per venire incontro alle necessità degli amministratori di database, la MySQL AB ha rilasciato un pacchetto di software molto interessanti (per lo più ancora in fase di sviluppo) che prende il nome di MySQL GUI Tools. In questo pacchetto sono inclusi:

  • MySQL Administrator, per l'amministrazione del server MySQL (il software che utilizzeremo più avanti)
  • MySQL Query Browser, per eseguire query arbitrarie sulla falsariga di MS Access
  • MySQL Migration Toolkit, per eseguire migrazioni da altri sistemi (Oracle, MS Access, MS SQL Server)
  • MySQL Workbench, per analizzare visivamente la struttura di un database, l'erede di DbDesigner

Tutti i software sono distribuiti gratuitamente e offrono funzionalitù e caratteristiche di qualità.

Cos'è la cache di MySQL

Dalla versione 4.0.1 MySQL possiede un sistema di caching interno per ottimizzare le risorse di sistema. Questa caratteristica, attivabile tramite il file di configurazione di MySQL, analizza la query inviata e controlla l'esistenza di record precedentemente estratti per evitare di eseguire nuovamente la query.

In pratica la prima volta i risultati vengono estratti, salvati in memoria (Ram) e serviti al client richiedente. Al successivo tentativo di accesso a tali dati non sarà più necessario accedere all'hard disk in lettura, applicare le clausole specificate in WHERE, ordinare i dati e servirli al client; basterà attingere alla memoria predisposta dal server in precedenza. Ovviamente ogni accesso in scrittura al database che modifichi in qualche modo i dati causerà la cancellazione della copia salvata in cache evitando di avere dati inconsistenti.

L'accesso ai dati in Ram consente di incrementare in maniera significativa le prestazioni del database. Di contro è necessario tenere presente che la quantità di Ram disponibile è limitata e quindi è necessario scendere ad un compromesso tra ottimizzazione dell'accesso ai dati del database e prestazioni generali del sistema per evitare di usare alternative più lente della Ram.

Attenzione: la cache si attiverà solo se le due query passate dal client al server sono identiche byte per byte: uno spazio in più, una maiuscola al posto di una minuscola, un commento in più non faranno beneficiare le due query del caching.

Come controllare se la cache è in funzione

Nonostante esistano diverse direttive di configurazione per attivare e impostare finemente il sistema di cache delle query scoprire se è in funzione è abbastanza semplice, ci basterà infatti eseguire un'unica query e leggerne il risultato: Yes evidenzia l'attività del sistema, No ci dice invece che è necessario attivarlo.

SHOW VARIABLES LIKE 'have_query_cache';

Alternativamente con MySQL Administrator è possibile avere immediatamente un riscontro visivo dell'andamento della cache: cliccando su Health nella colonna di sinistra, quindi sul tab Memory Health avremo nel grafico denominato Query Cache Hitrate l'andamento istantaneo del nostro sistema. Una linea fissa a zero ci indica subito che il sistema di cache non è in funzione.

Figura 1: il Query Cache Hitrate

Il query cache hitrate in azione

Avere il sistema di caching attivo è solo un primo passo: è necessario ora essere certi di avere un sistema efficiente e capace quindi di farci risparmiare effettivamente tempo e risorse.

Guide Database

Guida Access

Iniziare a sviluppare database grazie alla potenza visuale offerta...

Guida SQL Server 2005

L'RDBMS di Microsoft è uno dei più utilizzati, soprattutto in ambito...

Guida Oracle

Scoprire ed approfondire un dei più importanti RDBMS sulla scena...

Altre guide

Newsletter

Ogni settimana, in due distinte newsletter: notizie a approfondimenti su MySQL, SQLserver e Oracle.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Nessun corso previsto

Nessun corso previsto