Une chose à prendre en considération est la façon dont MySQL utilise les tampons pour ses principaux moteurs de stockage: InnoDB et MyISAM .
Ce qui se trouve dans la mémoire cache diffère considérablement entre ces moteurs de stockage.
InnoDB met en cache les pages de données et d'index. Ils sont chargés dans le pool de tampons InnoDB, qui est dimensionné par innodb_buffer_pool_size .
MyISAM ne met en cache que les pages d'index et elles sont chargées dans le cache de clés (tampon de clés), qui est dimensionné par key_buffer_size .
Vous devez utiliser information_schema.tables pour obtenir les tailles de données et d'index occupées sur le disque afin de dimensionner correctement le pool de mémoire tampon InnoDB et le cache de clés MyISAM .
En fonction de la quantité de données dont vous disposez et du temps dont vous disposez, vous pouvez réchauffer les caches comme suit:
Pour chaque table TableT
- aller à chaque index NDX
- pour chaque indice NDX
- exécuter SELECT chaque colonne dans NDX, au moins une colonne non indexée dans TableT à partir de TableT
En faisant cela, vous garantissez que chaque page de données et d'index est lue au moins une fois. Ils seront assis dans la cache. Ce concept est pratiqué, en partie et en principe, par Percona . Percona a intégré ce concept dans mk-slave-prefetch . Ce que fait ce programme est
- lire les journaux de relais sur un esclave avant que l'esclave ne traite le SQL
- prendre une instruction SQL du journal de relais et la convertir en SELECT en utilisant les clauses WHERE, GROUP BY et ORDER BY comme guide pour choisir les index
- exécuter l'instruction SELECT provenant de SQL converti
Cela oblige l'esclave à disposer de 99,99% des données nécessaires à l'esclave pour traiter le SQL rapidement. Cela permet également à l'esclave de se préparer au cas où vous basculer manuellement vers l'esclave et de le promouvoir en maître DONT LES CACHES SONT JUSTE À PROPOS DU MÊME QUE LE MAÎTRE QUE VOUS AVEZ ÉCHOUÉ.
CONCLUSION
Rien de mieux que d'avoir des caches prêts, désireux et capables d'être utilisés dans un environnement de INSERTS, MISES À JOUR et SUPPRESSIONs lourds.
Essaie !!!
CAVEAT
Avec la naissance de produits comme memcached, certains se sont éloignés de la nécessité d'effectuer un réglage correct de MySQL. Certes, de nombreux sites bénéficient de l'augmentation de la récupération de données fournie par le contrôle du comportement de mise en cache des données, comme les développeurs l'ont rapidement vu avec memcached. De nombreux autres sites, simplement en changeant de moteur de stockage ou en configurant correctement MySQL, ont réalisé les mêmes avantages en termes de performances. Avant d'abandonner la base de données et de l'utiliser strictement comme référentiel, profitez au maximum de votre base de données. Suivez la diligence raisonnable et vous pourriez être agréablement surpris de ce que MySQL fera pour vous.