Par défaut, le système de gestion de cache de clé de MySQL 4.1 utilise la stratégie LRU pour choisir les blocs de cache qui doivent être remplacés, mais il accepte aussi une autre méthode plus sophistiquée, appelée "stratégie de l'insertion au milieu".
Lors de l'utilisation de la stratégie d'insertion au milieu,
la chaîne LRU est divisée en deux parties : une
sous-chaîne principale, et une sous-chaîne secondaire. Le
point de division entre les deux parties n'est pas fixé, mais
le système s'assure que la partie principale n'est pas ``trop
petite'', et qu'elle contient au moins
key_cache_division_limit
% de bloc de cache
de clés. key_cache_division_limit
est un
composant d'une variable structurée de cache de clé, et sa
valeur peut être modifiée indépendamment pour chaque cache.
Lorsqu'un bloc d'index est lu dans une table, depuis le cache
de clé, il est placé à la fin de la sous-chaîne
secondaire. Après un certain nombre d'accès, il est promu
dans la sous-chaîne principale. Actuellement, le nombre
d'accès requis pour passer un bloc et le même pour tous les
blocs d'index. Dans le futur, nous allons permettre au
compteur d'accès d'utiliser le niveau de
B-tree
: moins d'accès seront
nécessaires à un noeud s'il contient un noeud non-terminal
d'un des niveaux supérieur de l'index
B-tree
.
Un bloc de la chaîne principale est placé à la fin de la
chaîne. Le bloc circule alors dans la la sous-chaîne. Si le
bloc reste à la fin de la sous-chaîne suffisamment
longtemps, il est rétrogradé dans la chaîne secondaire. Ce
temps est déterminé par la valeur du composant
key_cache_age_threshold
.
La valeur de seuil prescrit que, pour un cache de clé
contenant N
blocs, le bloc au début de la
chaîne principale qui n'est pas accédé dans les derniers
N*key_cache_age_threshold/100
accès doit
être placé au début de la chaîne secondaire. Il devient le
premier candidat à l'éviction, car les blocs de remplacement
sont toujours pris au début de la chaîne secondaire.
La stratégie de l'insertion au milieu vous permet de garder
les blocs les plus utilisés dans le cache. Si vous préférez
utiliser la stratégie LRU classique, laissez la valeur de
key_cache_division_limit
à 100.
La stratégie d'insertion au milieu aide à améliorer les
performances lorsque l'exécution d'une requête qui requiert
un scan d'index place dans le cache toutes les valeurs de
l'index. Pour éviter cela, vous devez utiliser la stratégie
d'insertion au milieu, avec une valeur très inférieure à
100 pour key_cache_division_limit
. Les
blocs les plus utilisés seront conservés dans le cache
durant un tel scan.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.