web-dev-qa-db-fra.com

Causes d'E / S à tampon élevé SQL Server 2008 R2

J'essaie de dépanner les performances sur un serveur SQL que nous avons pour notre serveur de gestion de documents et aujourd'hui, les performances ont atteint un niveau record.

En regardant l'entrepôt de données de gestion (MDW) que j'ai installé récemment, je peux voir une énorme pointe dans les E/S du tampon. Le temps d'attente SQL combiné est de l'ordre de 1500-2000 ms, ce qui est considérablement plus élevé que la normale (environ 500 ms). La plus grande partie de cette augmentation est due aux E/S tampons.

N'étant pas un DBA et faisant cela par nécessité, je suis massivement hors de ma profondeur.

Existe-t-il un moyen de savoir pourquoi il y a eu une augmentation importante des E/S de tampon? Est-ce probablement dû à une requête qui tire de grandes quantités de données ou à une configuration incorrecte des limites de mémoire de SQL Server? Y a-t-il quelque chose de spécifique (ou général d'ailleurs) que je devrais regarder ou des DMV que je peux interroger pour aider au dépannage?

Le serveur est SQL Server 2008 R2. Il s'agit d'un VM exécutant deux vCPU et 8 Go RAM avec les disques hébergés sur une baie distincte sur un SAN).

enter image description here

Les graphiques ci-dessus ont tous été générés à l'aide de SQL Server Management Data Warehouse .

8
Tim Alexander

Si vous regardez attentivement le graphique des attentes, les barres colorées indiquent en fait les attentes de verrouillage, pas les attentes d'E/S.

En outre, le graphique d'E/S montre une utilisation accrue du système du disque, et non SQL Server utilisation du disque.

Étant donné que le graphique de la mémoire approche de la taille de la mémoire de votre système à mesure que l'utilisation du système augmente au fil du temps, je pense que votre instance est surchargée pour le paramètre de mémoire du serveur max actuel (ou le paramètre de mémoire du serveur max n'est pas défini du tout), et un ou de plus en plus de pools de mémoire SQL Server sont échangés sur le disque.

La solution consiste à réduire le paramètre de mémoire maximale du serveur (ou à le définir sur une valeur appropriée s'il n'est pas défini). Veuillez voir ma réponse ici pour une réponse plus approfondie d'un scénario similaire, et mon article de blog:

La mémoire de mon serveur SQL est-elle surchargée?

9
Jon Seigel