Comportement du cache de plan complet

8

Dans SQL Server 2005, que se passe-t-il lorsque le cache du plan se remplit? J'ai fait quelques recherches, et d'après les morceaux rassemblés, il semble que les plans mis en cache aient un "âge" qui se compose de leur poids ou coût à compiler, multiplié par le nombre de fois qu'il a été exécuté depuis sa mise en cache. Au fil du temps, cet âge est décrémenté, jusqu'à ce qu'il atteigne 0, lorsqu'il est considéré comme "vieilli" et peut être rincé en cas de besoin. Lorsque le cache de plan se remplit, les plans périmés sont vidés du cache.

Y a-t-il autre chose qui se passe dans les coulisses pour compliquer ce scénario?

Merci,

Mat

Matt M
la source

Réponses:

9

La meilleure information pour le sujet trouvé sur MSDN est ici: Mise en cache et réutilisation du plan d'exécution . Citation de l'article MSDN:

"Suppression de plans d'exécution du cache de procédures

Les plans d'exécution restent dans le cache de procédures tant qu'il y a suffisamment de mémoire pour les stocker. En cas de pression mémoire, le moteur de base de données utilise une approche basée sur les coûts pour déterminer les plans d'exécution à supprimer du cache de procédures. Pour prendre une décision basée sur les coûts, le moteur de base de données augmente et diminue une variable de coût actuelle pour chaque plan d'exécution en fonction des facteurs suivants.

En cas de pression mémoire, le moteur de base de données répond en supprimant les plans d'exécution du cache de procédures. Pour déterminer les plans à supprimer, le moteur de base de données examine à plusieurs reprises l'état de chaque plan d'exécution et supprime les plans lorsque leur coût actuel est nul. Un plan d'exécution avec un coût actuel nul n'est pas supprimé automatiquement lorsque la pression de la mémoire existe; il n'est supprimé que lorsque le moteur de base de données examine le plan et que le coût actuel est nul. Lors de l'examen d'un plan d'exécution, le moteur de base de données pousse le coût actuel vers zéro en diminuant le coût actuel si une requête n'utilise pas actuellement le plan. "

Il vaut mieux lire l'article complet, c'est très bien documenté. Voyez qu'il a aussi quelques liens.

Marian
la source