Una de las tareas de un administrador de base de datos es el poder identificar la raíz de un problema de performance, en este artículo hablare de la memoria, pero es importante mencionar que aunque todo apunte a un problema de memoria, debe de analizarse el porque se esta requiriendo de tanta memoria en un equipo.

Muchas de estas veces es por falta de índices que como consecuencia en cada consulta se suben más datos a memoria de los que se requieren, otra causa puede ser un mal diseño en la base de datos o queries mal diseñados.

¿Como saber si tenemos un problema de memoria.?
Los cuellos de botella en la memoria de un servidor de Base de Datos se pude identificar cuando se esta generando demasiado paging, un alto consumo de memoria, un “buffer cache hit ratio” muy bajo  y un alto volumen de lecturas y escrituras en el disco. Todo esto es posible medirlo con los contadores del sistema operativo y de SQL Server que se muestran a continuación:

  • Memory: Pages/Sec
  • Memory: Available Bytes
  • SQL Server: Buffer Manager: Buffer Cache Hit Ratio
  • Physical Disk: Disk Reads/sec
  • Physical Disk: Disk Writes/sec

Memory: Pages/Sec
Este contador nos indica el número de páginas por segundo que son movidas de memoria RAM a memoria virtual en el disco duro. Cuando tenemos lecturas muy grandes de este contador, indica que nuestra memoria se encuentra bajo mucho stress. Entre mayor paging tengamos, se genera más IO en el disco. OJO el paging es normal en un servidor pero debemos tener en niveles aceptables, por lo que no hay que intentar eliminarlo.
Si asumimos que en nuestro servidor de Base de Datos, lo único que se esta ejecutando es SQL Server y no una aplicación extra el valor promedio que debemos tener debe encontrarse entre 0 y 20 paginas por segundo, picos mayores a 20 es normal, pero si nos encontramos constantemente en un valor mayor a 20 paginas por segundo, entonces estamos teniendo un cuello de botella. Con esto podemos concluir que entre más RAM tenga el servidor, menor será el paging que se presente.
Si no tuviéramos solamente SQL Server ejecutándose en nuestro servidor de base de datos, la manera de identificar que en realidad es SQL Server y no otro proceso el causante del paging, se debe de monitorear el contador Process: Page Faults/sec para el proceso de SQL Server.

Memory: Available Bytes
Este contador mide  la cantidad de memoria disponible en un servidor. El valor promedio de este contador debe ser mayor a los 5MB, de no ser así se puede estar presentando problemas de desempeño en el equipo por falta de memoria.

SQL Server: Buffer Manager: Buffer Cache Hit Ratio
Este contador indica que tan frecuente SQL Server 2005 accede el buffer en lugar del disco duro para extraer datos. Si nuestro servidor tiene una aplicación OLTP, este valor puede exceder el 90%, el valor ideal es 99%. Un buffer cache hit ratio menos al 90% generalmente indica que la RAM esta teniendo demasiada presión y que esta degradando el desempeño de SQL Server. Si las lecturas se encuentran entre el 90% y 99%, generalmente no se tienen problemas pero el agregarle más memoria el desempeño de SQL Server mejoraría.
Si nuestro servidor se encuentra ejecutando aluna aplicación OLAP, el valor de este contador puede ser menor al 90% debido a la forma de trabajar de este tipo de aplicaciones. Debido a esto se debe ser muy cauteloso al momento de realizar un diagnostico con este contador.

Physical Disk: Disk Reads/sec y Physical Disk: Disk Writes/sec
Estos contadores son un poco difíciles de interpretar, porque los límites de transferencia de los discos dependen del hardware instalado en el servidor, por ejemplo un disco SCSI puede manejar entre 50 y 70 I/O por segundo. Para poder interpretar este contador es necesario ayudarse de los otros mencionados. Lo que ayuda mucho en estos casos es tener un baseline con el cual se pueda comparar al momento de tener sospechas que tenemos un cuello de botella en la memoria.

 

 Contador

 Valor

 Memory: Pages/Sec  Entre 0 y 20
 Memory: Available Bytes  > 5MB
 SQL Server: Buffer Manager: Buffer Cache Hit Ratio  > 90%


 

You are not authorised to post comments.

Comments powered by CComment

DBASupport - Foro

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 3 years ago.
  • 3 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
URGE AYUDA
  • Topic started by
  • in General
  • 15 years ago.
  • 15 years ago.
  • 30 replies
HOLA ESPERO ME PUEDAN AYUDAR. TEN GO UNA TABLA CON una estructura similar a la siguiente: id_mov cargo subtotal total...

Duada de Memoria de SQL Server 2005
  • Topic started by Erzengel
  • in General
  • 11 years ago.
  • 11 years ago.
  • 30 replies
Buen Día Recurro nuevamente a su sabiduría. Quiero saber el porque tiene un tope SQL Serever de 2GB en Windows server 2003 de 32 bit y si alguien...

SqlDateTime overflow
  • Topic started by
  • in General
  • 15 years ago.
  • 15 years ago.
  • 11 replies
Alguno de ustedes ha tenido este problema: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.' Les...

problemas para iniciar el agente sql
  • Topic started by acgch
  • in General
  • 14 years ago.
  • 14 years ago.
  • 11 replies
Recientemente para asegurar el sql server 2005, cree una cuenta sql con derechos de sysadmin y borre el grupo BUILTIN\Administradores para evitar...

Problemas para levantar mirror
  • Topic started by acgch
  • in General
  • 14 years ago.
  • 14 years ago.
  • 16 replies
Hola amigos, tengan un buen día, les comento que estoy configurando mirror siguiendo los pasos a través del wizard del managment studio y también...
Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 3 years ago.
  • 3 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...

Estadisticas en la base de datos
Buenos días, estoy teniendo problemas de performance en mis queries y quisiera saber como puedo validar que mis tablas tienen las estadisticas...
Deshabilitar todos los jobs
  • Topic started by agamez
  • in Jobs
  • 3 years ago.
  • 3 years ago.
  • 1 reply
Buenos días, alguien sabe como puedo deshabilitar rapidamente todos los jobs de SQL Server, gracias.

Mirroring con estados disconnected
Hola, el día de hoy después de reiniciar mi servidor de destino a donde realizo el mirroring ya no pude replicar más, el error que muestra es que...

Se me duplica el mensaje en /etc/motd
  • Topic started by agamez
  • in General
  • 3 years ago.
  • 3 years ago.
  • 2 replies
Buen día, alguien tiene idea porque después de actualizar a fedora 28 se me esta duplicando la salida de mi /etc/motd?

Cómo puedo filtrar un mensaje en el log messages
Buenos días, estoy recibiendo en mi log de errores muchos mensajes de cron, ya que tengo varios crones configurados en mi server. Existe alguna...

Cómo validar la hora de ejecución de un proceso
Hola, estoy tratando de validar que un proceso sólo pueda ser ejecutado dentro de un periodo de tiempo, en este caso entre las 7:00 AM y las 7:00...