Una cosa da prendere in considerazione è il modo in cui MySQL utilizza i buffer per i suoi principali motori di archiviazione: InnoDB e MyISAM .
Ciò che si trova nella memoria differisce notevolmente tra questi motori di archiviazione.
InnoDB memorizza nella cache sia le pagine dei dati che quelle dell'indice. Vengono caricati nel pool di buffer InnoDB, che viene ridimensionato da innodb_buffer_pool_size .
MyISAM memorizza nella cache solo le pagine di indice e vengono caricate nella Key Cache (Key Buffer), che è dimensionato da key_buffer_size .
È necessario utilizzare information_schema.tables per ottenere le dimensioni dei dati e dell'indice occupate sul disco per dimensionare correttamente il pool di buffer InnoDB e la cache delle chiavi MyISAM .
A seconda di quanti dati hai e di quanto tempo concederai, puoi riscaldare le cache come segue:
Per ogni tavolo TableT
- vai a ciascun indice NDX
- per ogni indice NDX
- eseguire SELECT ogni colonna in NDX, almeno una colonna non indicizzata in TableT da TableT
In questo modo garantisci che ogni pagina di dati e indice venga letta almeno una volta. Si siederanno nella cache. Questo concetto è praticato, in parte e in linea di principio, da Percona . Percona ha sviluppato questo concetto in mk-slave-prefetch . Ciò che fa questo programma è
- leggere i log di inoltro su uno slave prima che lo slave elabori l'SQL in esso
- prendere un'istruzione SQL dal registro di inoltro e convertirla in un SELECT utilizzando le clausole WHERE, GROUP BY e ORDER BY come guida per la scelta degli indici
- eseguire l'istruzione SELECT proveniente da SQL convertito
Ciò forza lo slave ad avere il 99,99% dei dati necessari allo slave per elaborare rapidamente l'SQL. Ciò inoltre rende lo slave preparato nel caso in cui si esegua il failover manuale dello slave e lo promuova a un master, QUALI SONO LE STRADE SOLO SULLA STESSA QUELLA DEL MASTER DA CUI SEI ERRATO.
CONCLUSIONE
Non c'è niente di meglio che avere cache pronte, disponibili e in grado di utilizzarle in un ambiente con INSERTI, AGGIORNAMENTI ed ELIMINI pesanti.
Provaci !!!
AVVERTIMENTO
Con la nascita di prodotti come memcached, alcuni si sono allontanati dalla necessità di eseguire la corretta messa a punto di MySQL. Certo, molti siti beneficiano della spinta nel recupero dei dati fornita controllando il comportamento della memorizzazione nella cache dei dati come gli sviluppatori hanno visto rapidamente con memcached. Molti altri siti, semplicemente cambiando i motori di archiviazione o configurando correttamente MySQL, hanno realizzato gli stessi vantaggi in termini di prestazioni. Prima di rinunciare al database e utilizzarlo rigorosamente come repository, sfruttare al massimo il database. Segui la dovuta diligenza e potresti essere piacevolmente sorpreso da ciò che MySQL farà per te.