SQLServer: La tasa de aciertos de la caché del búfer es una buena indicación de un POSIBLE cuello de botella en la memoria.

Estoy buscando una indicación (si la hubiera) que ignoraría la opción de cuello de botella de memoria, la aceptaría o me haría investigar más.

por ejemplo:

esperanza de vida de la página:

SELECT [object_name], [counter_name], [cntr_value] FROM sys.dm_os_performance_counters WHERE [object_name] LIKE "%Manager%" AND [counter_name] = "Page life expectancy" 

ingrese la descripción de la imagen aquí

EN esta ocasión, en mi entorno actual, tengo un servidor que tiene 8 GB de RAM, le preguntaría a la gerencia para más memoria. Creo que esto es un cuello de botella de memoria.

Lo que está usando la RAM sería otra investigación.

¿Este correo electrónico a continuación es válido para identificar posibles cuellos de botella de memoria?

Necesitamos mirar SQLServer: Tasa de aciertos de caché de búfer

Si esa proporción es menor al 95%, entonces el servidor está bajo presión de memoria

Espero que esto ayude,

ingrese la descripción de la imagen aquí

Comentarios

  • No base su sugerencia sobre la memoria en Buffer Cache hit ratio . Por favor, lea Gran debate sobre SQL Server sobre BCHR , ya que nunca confío en este contador. Puede confiar en PLE pero debe ver PLE para todos los nodos NUMA (si lo tiene)
  • El valor de PLE parece ser muy inferior pero otros contadores están bien. Usted etiquetó la pregunta con dos versiones, puedo darle una lista de contadores para monitorear el uso de la memoria, pero como hay 2 versiones involucradas, hay una pequeña diferencia. ¿Qué versión estás viendo exactamente?

Respuesta

Necesitamos mirar SQLServer: índice de aciertos de caché de búfer. Si ese índice es menor al 95%, entonces el servidor está bajo presión de memoria

Deje de mirar búfer Proporción de aciertos en caché para determinar la presión de la memoria. Esto se debe a que con el mecanismo de lectura anticipada en SQL Server ya hay más páginas que suficientes en el grupo de búfer para satisfacer la consulta, por lo que BCHR no proporciona cifras precisas sobre la presión de la memoria. Incluso podría ver que BCHR ni siquiera se reduciría cuando hay presión de memoria. Todo esto se ha explicado en Gran debate de SQL Server sobre BCHR

La salida de PLE que publicaste parece muy baja, pero no podemos usar un contador para calibre la presión de la memoria. PLE es una indicación más de la actividad de E / S en el servidor. Es posible que debido a la intensa actividad de E / S, PLE se desplomara. Si observa que la memoria del servidor Target y Total sigue siendo la misma. Lo cual es una buena señal.

Para Edition upto 2008 R2. Puede utilizar los siguientes contadores

  1. SQLServer: Buffer Manager – CheckpointPages / sec:

  2. SQLServer: Buffer Manager – Memory Grants Pendiente:

  3. SQLServer: Administrador de búfer – Memoria del servidor de destino:

  4. SQLServer: Administrador de búfer – Memoria total del servidor

  5. SQLServer: Buffer Manager – Páginas gratuitas

  6. SQLServer: Buffer Manager – Free List Stall / seg

  7. SQLServer: Administrador de búfer – Esperanza de vida de la página

Para SQL Server 2012 onwards pocos búfer Los contadores de grupos están en desuso y, por lo tanto, tenemos que usar los contadores del administrador de memoria

  1. SQL Server: Administrador de memoria: memoria del servidor de destino (KB)

  2. SQL Server: Administrador de memoria – Memoria total del servidor (KB)

  3. SQL Server: Administrador de memoria – Memoria libre (KB)

  4. SQL Server: Administrador de memoria – Memoria caché de base de datos (KB)

  5. SQLServer: Administrador de búfer – Páginas gratuitas

  6. SQLServer: Administrador de búfer – Lista libre parada / seg

  7. SQLServer: Administrador de búfer – Esperanza de vida de la página

Tenga en cuenta que si tiene mucha actividad en el disco, no olvide consultar también los contadores relacionados con el disco. Cree un conjunto de recopiladores de datos y déjelo funcionar durante 4-5 horas cuando la carga en el sistema esté en su punto máximo y luego agregue la instantánea del recopilador de datos en su pregunta. Entonces podemos determinar si SQL Server necesita más memoria o no.

Personalmente, 8G es un poco menos de RAM considerando la carga de trabajo y los requisitos del sistema operativo en estos días. En la parte posterior de su cabeza, siempre debe pensar en aumentar la RAM.

Respuesta

Tenemos que mirar SQLServer: índice de aciertos de caché de búfer

Si ese índice es inferior al 95%, entonces el servidor está bajo presión de memoria

Espero que esto ayude,

Esto no te ayudará a decidir el cuello de botella de la memoria por sí solo con seguridad. Más bien, lo que preferiría es recopilar los datos de los siguientes contadores al menos durante un día durante las horas de trabajo / carga pesada.

Memory – Available MBytes SQLServer: Buffer Manager – Page Life Expectancy SQLServer: Memory Manager – Memory Grants Pending SQLServer: Memory Manager – Target Server Memory SQLServer: Memory Manager – Total Server Memory SQLServer: SQL Statistics – Batch Requests/sec SQLServer: SQL Statistics – Compilations/sec 

Lo mejor sería Baseline el servidor SQL como se sugiere Volver a lo básico: captura de líneas base en SQL de producción Servidores que también recopilarán los contadores de rendimiento requeridos junto con las estadísticas de espera para cualquier problema ..

Además, 8 GB de RAM pueden no ser tan adecuados según el env de hoy, pero nuevamente depende de lo que sea la carga en el sistema junto con el tamaño de las bases de datos alojadas en la instancia \ instancias.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *