Qu'est-ce que pageiolatch SH wait type dans SQL Server?

J'ai une requête qui prend beaucoup de temps dans le milieu d'une transaction. Quand je reçois le wait_type il est PAGEIOLATCH_SH.

Que signifie ce type d'attente et comment cela peut-il être résolu?

88
demandé sur gotqn 2009-03-07 01:10:21

2 réponses

De MSDN:

PAGEIOLATCH_SH

Se produit lorsqu'une tâche attend sur un loquet un tampon qui se trouve dans une requête I/O. La requête de verrouillage est en mode partagé. De longues attentes peuvent indiquer des problèmes avec le sous-système de disque.

En pratique, cela se produit presque toujours en raison de grandes analyses sur de grandes tables. Cela n'arrive presque jamais dans les requêtes qui utilisent efficacement les index.

Si votre requête est comme ceci:

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

, vérifiez que vous avoir un indice composite sur (col1, col_primary_key).

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

Les deux sont très disk I/O consommant des opérations sur de grandes tables.

109
répondu Quassnoi 2009-03-09 21:25:59

PAGEIOLATCH_SH le type d'attente apparaît généralement à la suite d'un index fragmenté ou non optimisé.

Souvent, les raisons d'un type d'attente PAGEIOLATCH_SH excessif sont:

  • le sous-système d'e / s a un problème ou est mal configuré
  • sous-système D'E/S surchargé par d'autres processus qui produisent l'activité d'E/S élevée
  • mauvaise gestion de l'index
  • lecteur logique ou physique idée fausse
  • problèmes réseau / latence
  • Pression de la mémoire
  • Mise en miroir synchrone et AlwaysOn AG

Afin d'essayer de résoudre le type d'attente élevé PAGEIOLATCH_SH, Vous pouvez vérifier:

  • SQL Server, requêtes et Index, car très souvent cela pourrait être trouvé comme une cause profonde des types d'attente PAGEIOLATCH_SH excessifs
  • pour la pression de la mémoire avant de sauter dans un sous-système d'e/s dépannage

Gardez toujours à l'esprit qu'en cas de mise en miroir de sécurité élevée ou de disponibilité de validation synchrone dans AlwaysOn AG, une augmentation/excessive PAGEIOLATCH_SH peut être devrait.

Vous trouverez plus de détails sur ce sujet dans l'article gestion excessive des types D'attente SQL Server PAGEIOLATCH_SH

4
répondu G.Hunt 2017-11-10 16:07:46