104 votes

Quel est le type d’attente PAGEIOLATCH_SH dans SQL Server ?

J’ai une requête qui prend beaucoup de temps au cours d’une transaction. Quand je reçois la wait_type du processus, il est PAGEIOLATCH_SH. Que signifie ce type d’attente et comment cela peut-il être résolu ?

124voto

Quassnoi Points 191041

À partir de MSDN:

PAGEIOLATCH_SH

Se produit lorsqu'une tâche est en attente sur un verrou pour un tampon dans un I/O la demande. Le loquet de la demande est en mode Partagé. Les longs délais d'attente peuvent indiquer des problèmes avec le sous-système de disque.

Dans la pratique, ce qui arrive presque toujours à cause de la grande scanne sur de grandes tables. Il n'arrive presque jamais dans les requêtes qui utilisent des index de manière efficace.

Si votre requête est comme ceci:

Select * from <table> where <col1> = <value> order by <PrimaryKey>

, vérifiez que vous disposez d'un indice composite sur (col1, col_primary_key).

Si vous n'en avez pas, alors vous aurez besoin d'un plein INDEX SCAN si l' PRIMARY KEY est choisi, ou un SORT si un index sur col1 est choisi.

Deux d'entre eux sont très disk I/O consommer des opérations sur de grandes tables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X