Respostas:
Da documentação da Microsoft :
PAGEIOLATCH_SHOcorre quando uma tarefa está esperando em uma trava por um buffer que está em uma
I/Osolicitação. A solicitação de trava está no modo Compartilhado. Esperas longas podem indicar problemas com o subsistema de disco.
Na prática, isso quase sempre acontece devido a grandes varreduras em grandes tabelas. Quase nunca acontece em consultas que usam índices de forma eficiente.
Se sua consulta for assim:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
, verifique se você tem um índice composto ativado (col1, col_primary_key).
Se você não tiver um, precisará de um completo INDEX SCANse o PRIMARY KEYfor escolhido ou de um SORTse um índice col1for escolhido.
Ambos são I/Ooperações que consomem muito disco em grandes tabelas.
SQL for Smartiese Thinking in Sets) e meu blog, é claro :)
PAGEIOLATCH_SH O tipo de espera geralmente surge como resultado de um índice fragmentado ou não otimizado.
Muitas vezes, os motivos para o PAGEIOLATCH_SHtipo de espera excessiva são:
Para tentar resolver o PAGEIOLATCH_SHtipo de espera alta , você pode verificar:
PAGEIOLATCH_SHtipos de espera excessivosSempre tenha em mente que no caso de espelhamento de alta segurança ou disponibilidade de confirmação síncrona no AlwaysOn AG, PAGEIOLATCH_SHpode-se esperar aumento / excessivo .
Você pode encontrar mais detalhes sobre este tópico no artigo Manipulando tipos de espera PAGEIOLATCH_SH excessivos do SQL Server