sql-server - cxpacket - pageiolatch_ex
¿Qué es el tipo de espera PAGEIOLATCH_SH en SQL Server? (2)
Desde MSDN :
PAGEIOLATCH_SH
Se produce cuando una tarea está esperando en un bloqueo para un búfer que está en una solicitud de
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 su consulta es así:
Select * from <table> where <col1> = <value> order by <PrimaryKey>
, compruebe que tiene un índice compuesto en (col1, col_primary_key)
.
Si no tiene uno, necesitará una INDEX SCAN
completa si se elige la PRIMARY KEY
, o una SORT
si se elige un índice en col1
.
Ambas son operaciones de consumo de I/O
muy disco en tablas grandes.
Tengo una consulta que tarda mucho tiempo en el medio de una transacción. Cuando obtengo el wait_type
del proceso, es PAGEIOLATCH_SH
.
¿Qué significa este tipo de espera y cómo puede resolverse?
PAGEIOLATCH_SH
tipo de espera PAGEIOLATCH_SH
generalmente aparece como resultado de un índice fragmentado o no optimizado.
A menudo, los motivos del tipo de espera PAGEIOLATCH_SH
excesivo son:
- El subsistema de E / S tiene un problema o está mal configurado
- Subsistema de E / S sobrecargado por otros procesos que están produciendo la alta actividad de E / S
- Mala gestión de índice
- Error de conducción lógica o física
- Problemas de red / latencia
- Presión de la memoria
- Synchronous Mirroring y AlwaysOn AG
Para intentar resolver el tipo de espera alto de PAGEIOLATCH_SH
, puede verificar:
- SQL Server, consultas e índices, como 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 la memoria antes de saltar a cualquier resolución de problemas del subsistema de E / S
Siempre tenga en cuenta que en caso de alta seguridad Mirroring o synchron-commit-disponibilidad en AlwaysOn AG, se puede esperar PAGEIOLATCH_SH
incrementado / excesivo.
Puede encontrar más detalles sobre este tema en el artículo Cómo manejar los tipos de espera excesivos de SQL Server PAGEIOLATCH_SH