2009-03-06 13 views

Respuesta

107

De MSDN:

PAGEIOLATCH_SH

Ocurre cuando una tarea está esperando en un pestillo para un búfer que está en una petición I/O. La solicitud de bloqueo está en modo compartido. Largas esperas pueden indicar problemas con el subsistema de disco.

En la práctica, esto casi siempre ocurre debido a escaneos grandes en mesas grandes. Casi nunca ocurre en consultas que utilizan índices de manera eficiente.

Si la consulta es la siguiente:

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

, compruebe que tiene un índice compuesto en (col1, col_primary_key).

Si no tiene uno, entonces usted necesita, ya sea que se elija un total si el PRIMARY KEY, o una SORT si se elige un índice en col1.

Ambos son muy I/O disco que consumen las operaciones en tablas grandes.

+0

Es una simple consulta real. Seleccionar * de

donde = ordenado por . También tenemos un índice en solo col1 y hemos tratado de reconstruir el índice. – Ryan

+0

¿Puede sugerir algunos recursos para el aprendizaje de la comprensión que tiene de lo que es intensivo del disco, lo que requiere un recorrido de índice completo, lo que requiere una especie etc –

+1

@GregB: si ya tiene un conocimiento básico de SQL, se podía leer los libros de Joe Celko (todos ellos, pero sobre todo 'SQL para Smarties' y' Pensando en Sets') y mi blog, por supuesto :) – Quassnoi

4

PAGEIOLATCH_SH tipo de espera por lo general surge como el resultado del índice fragmentado o no optimizado.

menudo razones de excesiva tipo PAGEIOLATCH_SH espera son:

subsistema
  • I/O tiene un problema o está mal configurado
  • subsistema de E/S sobrecargado por otros procesos que están produciendo la alta actividad de I/O
  • mala gestión índice
  • lógico o físico idea errónea unidad
  • problemas de latencia de red/
  • Memoria presión
  • espejo síncrono y AlwaysOn AG

Con el fin de tratar de resolver que tiene una alta PAGEIOLATCH_SH tipo de espera, se puede comprobar:

  • SQL Server, las consultas y los índices, ya que muy a menudo esto podría encontrarse como una causa raíz de los tipos de espera PAGEIOLATCH_SH excesivos
  • Para la presión de memoria antes de saltar a cualquier resolución de problemas del subsistema de E/S

siempre tener en cuenta que en caso de creación de reflejo de alta seguridad o síncrono de cometer disponibilidad en AlwaysOn AG, aumento/PAGEIOLATCH_SH se puede esperar excesiva.

se pueden encontrar más detalles sobre este tema en el artículo de Handling excessive SQL Server PAGEIOLATCH_SH wait types

Cuestiones relacionadas