Estamos viendo muy altos tipos de espera PAGELATCH_EX y PAGELATCH_SH junto con altas esperas de WRITELOG. He diagnosticado la consulta que causa las esperas de PAGELATCH y puedo eliminarlas al reducir la tasa de inserción en una clave principal en clúster ocupada definida con un valor de IDENTIDAD. Entiendo que este fenómeno se conoce como la última contención de inserción de página.
Sin embargo, mi pregunta es cuando se inserta un nuevo registro, ¿SQL Server toma un PAGELATCH_EX exclusivo en una página de búfer, inserta el registro en la página de búfer, escribe el registro en el registro de transacciones y luego libera el PAGELATCH_EX exclusivo como https detallado : // www.microsoft.com/en-ie/download/details.aspx?id=26665 Página 24. ¿O escribe primero el registro en el registro de transacciones antes de tomar el PAGELATCH_EX como se detalla "Resolviendo la contención de PAGELATCH en cargas de trabajo INSERT altamente concurrentes" Información básica Guía de SQLCAT para: motor relacional
Si el registro se escribe para iniciar sesión fuera del mecanismo de enclavamiento, entonces puedo descartar escrituras lentas en el disco como causa de altas esperas de PAGELATCH. Pero si el pestillo se mantiene hasta que el registro se haya endurecido para iniciar sesión, entonces probablemente debería tener en cuenta WRITELOG.
Además, ¿tener múltiples índices no agrupados provocaría que el enganche PAGELATCH_ * se mantenga por más tiempo, es decir, si una tabla tiene un agrupamiento y múltiples índices no agrupados se agregan y liberan simultáneamente en cada una de las páginas de búfer de índice?
Actualización 1 Después de leer confio-sql-server-writelog-wait slide two y arquitectura general WAL. Ahora entiendo que el paso "Registrar una entrada de registro de que la fila ha sido modificada" detallado en ambos documentos se refiere a que SQL Server registra un cambio en la memoria caché del registro de transacciones, no en el disco. Una vez que la transacción está completa o el búfer lleno, todos los registros se vuelcan inmediatamente al disco.