Comment MySQL utilise les index <<< |
Le cache de clé des tables MyISAM | Comment MySQL compte les tables ouvertes >>> |
7.4 Optimiser la structure de la base de données 7 Optimisation de MySQL Manuel de Référence MySQL 4.1 : Version Française . Conception . Rendre vos tables aussi compactes que possible . Index de colonnes . Index sur plusieurs colonnes . Comment MySQL utilise les index ->Le cache de clé des tables MyISAM . Comment MySQL compte les tables ouvertes . Quand MySQL ouvre et ferme les tables . Inconvénients de la création d'un grand nombre de tables dans la même base de données |
7.4.6 Le cache de clé des tables MyISAM
Pour réduire les accès aux disques, le moteur MyISAM emploie une stratégie utilisé par de nombreux systèmes de bases de données. Il utilise un cache qui garde en mémoire les blocs de tables les plus souvent utilisés.
Vous pouvez contrôler la taille du cache de clé avec la variable système key_buffer_size . Si cette variable vaut zéro, le cache ne sera pas utilisé. Le cache de clés est aussi désactivé si la valeur de key_buffer_size est trop petite pour allouer le nombre minimal de blocs de buffers (8). Lorsque le cache de clés n'est pas opérationnel, les fichiers d'index sont lus avec le cache du système de fichiers, fourni par le système d'exploitation. En d'autres termes, les index sont lus avec la même technique que les blocs de données.Un bloc d'index est une adresse unitaire pour le fichier d'index MyISAM . Généralement, la taille d'un bloc d'index est égal à la taille des noeuds de l'index B-tree . Les index sont représentés sur le disque en utilisant un arbre B-tree . Les noeuds terminaux sont appelés des feuilles. Les noeuds qui ne sont pas des feuilles sont dits non-terminaux. Tous les blocs de buffer dans la structure de cache de clés ont la même taille. Cette taille peut être égale, supérieure ou inférieure à la taille de bloc d'index de la table. Généralement, un de ces deux valeurs est un multiple de l'autre.Lorsque des données d'un bloc d'index de table doivent être lues, le serveur commence par vérifier si elles sont disponibles dans le cache de clés, plutôt que sur le disque. C'est à dire, qu'il va préférer écrire ou lire dans le cache de clés que sur le disque. Sinon, le serveur choisit un bloc de cache contenant un index d'une autre table, et remplace les données par celles de la table qu'il manipule. Dès que le bloc est dans le cache, les données d'index sont accessibles. Si un des blocs sélectionnés pour être écrasé, a été modifié, le bloc est considéré comme ``sale.'' Dans ce cas, avant d'être remplacé, il est d'abord écrit dans le fichier d'index, sur le disque.Généralement, le serveur suit une heuristique LRU ( Least Recently Used : le moins utilisé) : lorsqu'il choisit un bloc pour être remplacé, il sélectionne le bloc qui a été accédé le moins souvent. Pour faciliter ce choix, le module de cache de clés entretient une queue (la chaîne LRU) de tous les blocs utilisés. Lorsqu'un bloc doit être remplacé, les blocs du début de la queue sont les moins souvent sélectionnés, et sont les candidats au remplacement. Sommaire : |
<< | Le cache de clé des tables MyISAM | >> |
Comment MySQL utilise les index | Optimiser la structure de la base de données | Comment MySQL compte les tables ouvertes |