Una de las herramientas más utilizadas como administradores de bases de datos para detectar problemas en nuestros SQL Server es el monitor de rendimiento. Su uso es muy sencillo y hay muchos sitios donde se explica su funcionamiento, así que no voy a profundizar en ese sentido. Lo problemático es cómo analizar la información que nos devuelve, puesto que muchas veces ahí andamos un poco perdidos, sobre todo si no tenemos mucha experiencia.
En situaciones así, el primer recurso al que acudimos es la web. Entramos en nuestro buscador favorito y buscamos algo relacionado con “umbrales de contadores del monitor de rendimiento para SQL Server” (a ser posible en inglés) para a continuación encontrarnos con miles de páginas que nos van a detallar qué contadores son importantes para nuestro SQL Server y, sobre todo, qué valores son los que tenemos que tener de referencia para empezar a preocuparnos.
Y aquí empiezan nuestros problemas: ¿cuáles son los valores correctos? ¿nos fiamos de lo que aparece en la primera página de la lista de resultados? Porque puede ocurrir que el autor sí nos suene (es fiable) pero la fecha del artículo es de hace 6 años, o al revés: es reciente pero al autor no le conocemos… En cualquier caso decidimos seguir buscando para intentar sacar una recopilación de los contadores más comunes y sus umbrales asociados: hay veces que estos umbrales coincidirán y otras veces no tanto. Pero es que incluso aunque coincidan tal vez no sean muy fiables porque el autor se haya limitado a copiar el contenido de otra página que leyó hace tiempo. Parece que estamos en un callejón sin salida…
En situaciones así, lo ideal es tener una referencia válida, y por tal yo entiendo que haya sido realizada por un autor en el que se pueda confiar y que sea actual (pongamos menos de tres años). Y eso es lo que os presento aquí: en Quest Software publicaron (creo recordar en febrero de este año, 2011) un documento recopilatorio de los umbrales de los principales contadores del monitor de rendimiento para analizar SQL Server, y dicha recopilación corrió al cargo de profesionales muy renombrados en este mundillo: Kevin Kline (blog | twitter), Brent Ozar (blog | twitter), Christian Bolton (blog | twitter), Bob Ward (twitter) y Raoul Illyaos. Tan sólo hay que registrarse (proceso rápido y gratuito) en su web para a continuación descargarlo: http://www.quest.com/techbrief/sql-server-perfmon-counters-poster811635.aspx
El documento en sí es en realidad un póster con los contadores agrupados por conceptos teniendo para cada uno de ellos su nombre, el umbral y una descripción. Existen enlaces a documentación oficial para explicar por qué ese umbral y no otro y en otros casos explicaciones de porqué ciertos contadores han dejado de ser útiles. En definitiva: un documento muy, muy útil.
Sin embargo siguen existiendo cosas mejorables, como por ejemplo el umbral que se ha asignado al contador Page Life Expectancy. Este contador es uno de los más comunes y al que siempre se ha asociado 300 (segundos) como el umbral con el que trabajar, debiéndonos preocupar si obtenemos valores por debajo. El problema es que dicho umbral fue propuesto por Microsoft hace mucho tiempo y nunca se ha revisado, con lo que es muy probable que haya dejado de ser válido. De hecho, ya hay voces que denuncian esto (http://sqlskills.com/blogs/jonathan/post/Finding-what-queries-in-the-plan-cache-use-a-specific-index.aspx)
Al final a donde quiero llegar es que lo que realmente debemos hacer es crear nuestro propio baseline: obtener y documentar el rendimiento normal de nuestro sistema y una vez conseguido, registrar y analizar las causas cuando estos datos que consideramos normales tengan valores continuados muy diferentes (picos constantes). Podremos usar la información del documento que os comentaba como referencia, pero nunca como valores absolutos, ya que somos nosotros los que mejor conocemos nuestro entorno y los que podemos decidir con mayor criterio qué es lo que está mal y qué bien (siempre dentro del sentido común, claro).