MyISAM : ajuster la taille du key_buffer_size
Les performances des tables MyISAM sont, pour l’essentiel, liées au réglage du paramètre key_buffer_size que vous devez renseigner dans le fichier /etc/my.cnf. Vous pouvez aussi le régler de manière dynamique par l’une des commandes suivantes :
- SET GLOBAL key_buffer_size=128M
- SET @@global.key_buffer_size=128M
Il s’agit d’une quantité que vous réservez à la mise en cache des blocs d’index lus sur le disque. En MyISAM, l’accès est de type séquentiel indexé. Par défaut, l’index utilisé est la clé primaire. Pensez à ajouter des index sur les colonnes ou les combinaisons de colonnes sur lesquelles porte la clause WHERE de manière récurrente.
Efficacité du cache key_buffer_size
Pour déterminer la quantité de mémoire allouée au paramètre, vous devez calculer le rapport entre les blocs d’index lus sur le disque physique (key_reads) et les blocs d’index lus dans le cache (key_read_requests). Le ratio doit tendre vers 0. Vous pouvez ajuster la quantité de mémoire mise en cache en faisant le rapport entre le nombre de blocs d’index inutilisés dans le cache (key_unused_blocks) ramenés à la variable key_read_requests. Un taux de blocs inutilisés très important peut traduire une forte hétérogénéité dans l’utilisation des bases de données. Dans le cas d’une utilisation homogène, un faible taux peut traduire l’optimisation du cache.
Pour visualiser ces paramètres, tapez à partir de MySQL Workbench ou de HeidiSQL la commande SQL suivante :
SHOW STATUS LIKE 'key%';