DMV para optimización en SQL Server Tip 05
Esta serie de blogs incluye T-SQL y DMV que pueden ser utilizadas para detectar problemas de rendimiento de SQL Server y su posible solución.
SQL Server 2008 incluye el system_health que es un XEvent que nos ayuda a realizar resolución de problemas de desempeño del motor de SQL Server. Si queremos ver que este está ejecución, corremos el siguiente comando:
select * from sys.dm_xe_sessions
Si queremos ver los resultados de este XEvent ejecutamos el siguiente T-SQL
select CAST(xet.target_data as xml) from sys.dm_xe_session_targets xet
join sys.dm_xe_sessions xe
on (xe.address = xet.event_session_address)
where xe.name = 'system_health'
Esto T-SQL nos dará el resultado en formato XML con al información correspondiente.
Si abrimos ese XML veremos algo parecido a lo siguiente
Si el motor de SQL Server está teniendo problemas, entonces podemos revisar ese XML que contiene entre otras cosas lo siguiente:
- El sql_text y session_id para cualquier sesión con error de severidad >=20
- El sql_text y session_id para cualquier sesión con error de memoria tales como 17803, 701, etc
- Cualquier registro de "non-yielding problems” por ejemplo errores in tales como Msg 17883
- La callstack, sql_text, y session_id de cualquier sesción que haya esperado por "external waits” o "pre-emptive waits".
- La callstack, sql_text, y session_id de cualquier sesción que tenga esperas en “latches” mayor a 15 segundos
- The callstack, sql_text, and session_id for any sessions who have waited on locks for > 30 seconds
- The callstack, sql_text, and session_id for any session that have waited for an extended period of time for "external" waits or "pre-emptive waits".
Saludos,
Ing. Eduardo Castro Martínez
Comments