Incluso una lectura superficial de libros y
artículos sobre la supervisión del rendimiento de SQL Server le dirá que la
presión de memoria de SQL Server es lo primero que se debe vigilar. No es lo
único, ni mucho menos, el CPU, E/S de disco y contadores internos de SQL Server son de
importancia crítica para obtener la imagen completa, pero son los contadores de
memoria los que a menudo nos muestran las primeras indicaciones de un
rendimiento sub-óptimo
La memoria y la forma en que SQL Server la
utiliza, está justo en una especie de punto de intersección triple entre la CPU,
E/S de disco y la presión de memoria, pueden indicar índices que faltan, tablas mal
diseñados, falta real de la memoria en el servidor para la carga de trabajo,
otras aplicaciones que se ejecutan en el sistema, los usuarios iniciar sesión
en el servidor y así sucesivamente. Por el contrario, lo que permite SQL Server
para utilizar más memoria puede ayudar a cubrir una gran cantidad de estos y
otros temas
Una de las más importantes medidas es el PLE ( Page Life Expectancy)
Page Life Expectancy
Por mucho, el contador de rendimiento más citado
es Page Life Expectancy (también conocido como PLE). Este contador es parte del
objeto de administrador de búfer de SQL Server y se define en MSDN como
"el número de segundos que una página permanecerá en el grupo de búferes
sin referencias." A pesar de que no lo dice en su definición ni en su nombre,
este contador en realidad muestra el promedio, no el total o mínimo/máximo, de
la vida útil de la página en el grupo de búferes. Por lo que este contador
indica cuánto tiempo, en segundos y, en promedio, la página se aloja en el
grupo de búferes y cuanto más tiempo una página promedio está viviendo en el
grupo de búferes, mayores serán las posibilidades que SQL Server lo encontrará
allí cuando lo necesite de nuevo en lugar de tener que leer desde el disco
La relevancia de seguimiento de este
contador no debe ser exagerada, un valor bajo indica presión de memoria de SQL
Server, ya que conduce necesariamente a más de E/S, que es, por supuesto, el
componente más lento en la pila de varios órdenes de magnitud. Por ejemplo, un
índice de desaparecidos en una gran tabla (tabla para la que las páginas no caben
en la memoria RAM disponible para el grupo de búferes de SQL Server) finalmente
conducirá a un análisis completo que desembocará por supuesto a un aumento de
la lectura (problema) y la saturación de páginas potencialmente útiles de otras
tablas (problema que agrava). Tal acontecimiento sería fácilmente detectable
siguiendo el contador PLE con un valor necesariamente bajo.
Varias autoridades en la materia,
incluyendo al Cliente de SQL Server Advisory Team (CAT), indican que el valor
de este contador debe ser de al menos 300 para aplicaciones OLTP. CAT de SQL
Server también indica que los valores para este contador nunca deben bajar
rápidamente en un 50% o más
Hoy en día el valor 300 es demasiado
pequeño para ser utilizado como un umbral. Se determinó este valor cuando los
servidores generalmente tenían instalado 4 GB de RAM. Hoy en día, no es raro
que un SQL Servers tengan más de 48 GB de RAM. En lugar del viejo 300 de
umbral, una fórmula de adaptación se puede utilizar para obtener una estimación
del umbral:
((MAXBP(MB)/1024)/4)*300
Donde MAXBP (MB) representa la cantidad
máxima de memoria del Buffer Pool.
El contador SQL Server:Buffer
Manager:Database Page se puede utilizar para obtener el número de páginas que
deben ser convertidos a MB: (páginas * 8) / 1024 y se utiliza como valor MAXBP
(MB).
La fórmula anterior considera cada 4 GB de Buffer Pool (por nodo NUMA o
de otro tipo) para tener sus propios 300 segundos previstos por PLE.
Además de la fórmula, el valor de
referencia se puede determinar al determinar una línea base para la medida de
Page Life Expectancy.
Para consultar el valor de este contador
ejecute el siguiente:
SELECT [cntr_value]
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Buffer Manager%'
AND [counter_name] = 'Page life expectancy'
Traducción de: http://solutioncenter.apexsql.com/top-sql-server-memory-pressure-counters/