Vous pouvez rencontrer une baisse des performances de requête après l’exécution de certaines opérations de maintenance de base de données ou les opérations régulières de transactions dans SQL Server 2005

N° de bogue : 329155 (SQLBUDT)
N° de bogue : 329155 (SQL BU le suivi des erreurs)bogue #: 54582 (Maintenance du contenu)

Symptômes

Dans Microsoft SQL Server 2005, vous pouvez rencontrer une baisse des performances de requête après l’exécution de certaines opérations de maintenance de base de données ou les opérations de transactions régulières. Par exemple, vous pouvez remarquer une diminution soudaine des performances de requête après la restauration d’une sauvegarde de base de données.

À partir de SQL Server 2005 Service Pack 2, vous remarquerez messages semblable à la suivante dans le journal des erreurs SQL Server lorsque ce problème se produit :
2006-10-15 06:03:29.330 spid59 SQL Server a rencontré des 4 occurrences de vidage de la cachestore pour la cachestore 'Objet Plans' (partie du cache de plan) en raison de certaines maintenance de base de données ou reconfigurer les opérations.

2006-10-15 06:03:29.420 spid59 SQL Server a rencontré des 4 occurrences de vidage de la cachestore pour la cachestore 'Plans SQL' (partie du cache de plan) en raison de certaines maintenance de base de données ou reconfigurer les opérations.
2006-10-15 06:03:29.420 spid59 SQL Server a rencontré 4 occurrences de vidage de la cachestore pour la cachestore « Arborescences lié » (partie du cache de plan) en raison de certaines maintenance de base de données ou reconfigurer les opérations.
Toutefois, vous pouvez exécuter la commande DBCC FREEPROCCACHE ou la commande DBCC FREESYSTEMCACHE pour vider le cache de procédure. Si le cache de procédure est vidé en exécutant une de ces commandes, vous remarquerez des messages semblables aux suivants dans le journal des erreurs SQL Server :
2006-12-14 11:37:03.57 spid53 SQL Server a rencontré 1 occurrence (s) de cachestore de vidage de la cachestore 'Plans SQL' (partie du cache de plan) en raison d’opérations « DBCC FREEPROCCACHE » ou « DBCC FREESYSTEMCACHE ».
2006-12-14 11:37:03.57 spid53 SQL Server a rencontré 1 occurrence (s) de cachestore de vidage de la cachestore « Arborescences lié » (partie du cache de plan) en raison d’opérations « DBCC FREEPROCCACHE » ou « DBCC FREESYSTEMCACHE ».
Par conséquent, vous pouvez examiner le journal des erreurs SQL Server pour déterminer si le problème est provoqué par le problème décrit dans cet article.

Remarque Ce problème ne se produit pas dans Microsoft SQL Server 2008.

Cause

Ce problème se produit parce que certaines opérations de maintenance de base de données ou les opérations de transactions régulières effacement le cache de l’ensemble de la procédure.

État

Ce comportement est voulu par la conception.

Plus d'informations

Le cache de l’ensemble de la procédure est effacé lors de certaines opérations de niveau de base de données sont effectuées dans les scénarios suivants :
  • Une base de données a l’option de base de données AUTO_CLOSE définie à ON. Lorsque aucune connexion utilisateur fait référence à ou utilise la base de données, la tâche d’arrière-plan tente de fermer et arrêter automatiquement de la base de données.
  • Vous exécutez plusieurs requêtes sur une base de données avec les options par défaut. Ensuite, la base de données est supprimée.
  • Une capture instantanée de base de données pour une base de données source est supprimée.

    Remarque Les instantanés de base de données sont uniquement disponibles dans Microsoft SQL Server 2005 Enterprise Edition.
  • Vous remplacez l’état de la base de données hors connexion ou en ligne.
  • Vous parvenir à recréer le journal des transactions pour une base de données.
  • Vous restaurez une sauvegarde de base de données.
  • Vous exécutez l’instruction DBCC CHECKDB.

    Remarque Cela est vrai uniquement dans les versions de SQL Server 2005 antérieures à SQL Server 2005 SP2. Après avoir installé SQL Server 2005 SP2 ou versions ultérieures, le cache de l’ensemble de la procédure n’est pas vidé lorsque vous exécutez l’instruction DBCC CHECKDB.
  • Vous détachez une base de données.
  • Vous spécifiez l’une des options suivantes lorsque vous exécutez l’instruction ALTER DATABASE :
    • EN MODE HORS CONNEXION
    • EN LIGNE
    • MODIFIER LA VALEUR PAR DÉFAUT DU GROUPE DE FICHIERS
    • MODIFY_NAME
    • MODIFIER LE GROUPE DE FICHIERS READ_WRITE
    • COPIES ASSEMBLÉES
    • MODIFIER LE GROUPE DE FICHIERS READ_ONLY
    • READ_ONLY
    • READ_WRITE
  • Le cache de l’ensemble de la procédure est désactivé si une des options de serveur suivantes est modifiée par l’instruction RECONFIGURE :
    • chaînage des propriétés des base de données croisées
    • Création de l’index de mémoire (Ko)
    • délai d’attente de requête distante (s)
    • options de l’utilisateur
    • taille de réplication de texte maximum (B)
    • seuil de coût pour le parallélisme
    • degré maximal de parallélisme
    • mémoire minimale par requête (Ko)
    • attente de la requête (s)
    • min server memory (Mo)
    • max server memory (Mo)
    • limite de coût de l’administrateur de requêtes
    Remarque Cache de procédure n’est pas effacé si la valeur réelle ne change pas ou si la nouvelle valeur pour l’option max server memory server est définie à 0.
Si vous rencontrez ce problème, vous notez les modifications dans les valeurs suivantes lorsque vous utilisez l’Analyseur de performances pour collecter des données à partir des compteurs de performances de SQL Server 2005 :
  • Objet de performance : Processus
    Compteur : % temps processeur
    Instance : sqlservr

    La valeur de ce compteur augmente en raison de l’augmentation de l’activité du processeur. Pour l’essentiel, le cache de l’ensemble de la procédure est désactivé si ce problème se produit. Par conséquent, les demandes suivantes doivent générer de nouveaux plans de mise en cache. Ce comportement augmente légèrement l’activité de l’UC.
  • Objet de performance : SQLServer:Plan Cache
    Compteur : Nombre d’objets cache
    Instance : _Total

    Objet de performance : SQLServer:Plan Cache
    Compteur : Pages du cache
    Instance : _Total

    Les valeurs de ces compteurs soudainement diminue.

    Remarque Pour une instance nommée de SQL Server 2005, l’objet de performance est nommée MSSQL$InstanceName: Cache de Plan.
  • Objet de performance : Statistiques de SQLServer
    Compteur : SQLCompilations/s

    La valeur de ce compteur augmente considérablement après cet incident.

    Remarque Pour une instance nommée de SQL Server 2005, l’objet de performance est nommée MSSQL$InstanceName: statistiques de SQL.
Si vous capturez une Trace du Générateur de profils SQL à l’aide de l’événement CacheRemove , vous remarquez que cet événement est généré avec la valeur de la colonne TextData suivante lorsque ce problème se produit :
« Vidées du Cache de l’ensemble de la procédure »
Propriétés

ID d'article : 917828 - Dernière mise à jour : 17 janv. 2017 - Révision : 1

Commentaires