Réponses:
À partir de la documentation Microsoft :
PAGEIOLATCH_SHSe produit lorsqu'une tâche attend sur un verrou pour un tampon qui se trouve dans une
I/Odemande. La demande 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 grands scans sur de grandes tables. Cela n'arrive presque jamais dans les requêtes qui utilisent efficacement les index.
Si votre requête ressemble à ceci:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
, vérifiez que vous disposez d'un index composite activé (col1, col_primary_key).
Si vous n'en avez pas, vous aurez besoin soit d'un plein INDEX SCANsi le PRIMARY KEYest choisi, soit d'un SORTsi un index sur col1est choisi.
Les deux sont I/Odes opérations très consommatrices de disque sur de grandes tables.
SQL for Smartieset Thinking in Sets) et mon blog bien sûr :)
PAGEIOLATCH_SH Le type d'attente est généralement le résultat d'un index fragmenté ou non optimisé.
Les raisons d'un PAGEIOLATCH_SHtype d'attente excessif sont souvent :
Afin d'essayer de résoudre le problème du PAGEIOLATCH_SHtype d'attente élevé , vous pouvez vérifier:
PAGEIOLATCH_SHtypes d'attente excessifsGardez 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 / un excès PAGEIOLATCH_SHpeut être attendu.
Vous pouvez trouver plus de détails sur ce sujet dans l'article Gestion des types d'attente excessifs de SQL Server PAGEIOLATCH_SH