Creada el: 05/09/98 - Actualizada el: 22/06/99

Configuración avanzada de Memoria (memory)

memory. El parámetro memory, el más importante, es uno para el que no existe realmente un buen valor.  Después de ejecutar Setup, aunque su sistema disponga de cientos de megabytes de memoria, SQL Server no se configurará para utilizar más de 16 Mb.

Windows NT dispone de memoria virtual, que es una característica importante. No obstante, con memoria virtual, la suma total de los espacios de direcciones de todos los procesos puede superar realmente la cantidad de RAM instalada en la máquina, lo que sobre se mantendrá en disco en el archivo de paginación (PAGEFILE.SYS)  de forma que no siempre haya que paginar desde el disco. Pero la cuestión importante aquí es que la memoria puede paginarse, y que será recomendable evitarlo porque la paginación de la memoria es muy costosa.

Si configura SQL Server para demasiada memoria, provocará fallos de página, que son solicitudes de memoria virtual que no está actualmente en RAM, así que habrá que paginar en la imagen de la memoria. Generar fallos de página es mucho peor que tener una tasa de aciertos al acceder a la caché ligeramente menor, así que no deberá dar a SQL mas de lo necesario e intentar conseguir ajustar el parámetro memory hasta el último byte. No obstante, sí quiere sacar el mayor partido de la memoria de que disponga, y más memoria puede suponer una diferencia enorme en rendimiento. Leer datos de la memoria es miles de veces más rápido que utilizar una operación de E/S en disco.  Recuerde que es mejor quedarse corto que pasarse en la configuración de la memoria.

El enfoque para la supervisión y ajuste fino de la configuración de la memoria es conceptualmente sencillo, pero se tarda cierto tiempo e iteraciones en conseguir que funcione bien. La estrategia básica es la siguiente: Configure SQL Server para utilizar más memoria mientras vea una tasa de aciertos al acceder al caché superior y no vea un aumento en la paginación. Si es posible, siga añadiendo memoria fisíca al sistema mientras los aciertos al acceder al caché aumenten de manera significativa.

Puede examinar la tasa de aciertos al acceder a la caché desde el Monitor del sistema de Windows NT con el contador Cache Hit Ratio de SQLServer. El valor también puede examinarse directamente ejecutando DBCC PERFMON. En el Monitor de sistema, utilice el objeto Memoria y los contadores Páginas/seg y Fallos de página/seg para examinar la paginación. Para realizar esta operación correctamente tendrá que iniciar el Monitor de sistema y examinar estos valores durante un tiempo (minutos como mínimo, preferiblemente horas y a veces días si las cargas de trabajo son desiguales) hasta que el sistema llegue al equilibrio. Sí acaba de reiniciar SQL Server, la tasa de aciertos al acceder al caché, será pobre inícialmente, ya que el caché todavía no se ha llenado. Al empezar la supervisión, incluso las acciones más sencillas, como desplazar sus grupos de pantalla o pulsar con el ratón, provocarán actividad del sistema que puede generar fallos de página. Sin embargo, cuando el sistema se estabilice y esa actividad se detenga, el número de fallos de página deberá disminuir. Idealmente, después de estabilizado el sistema deberá ver que el contador Fallos de página/seg llega o se aproxima a O. Si se siguen produciendo cientos de fallos de página por segundo incluso después de estabilizado el sistema, sabrá que la memoria del sistema está configurada en exceso y deberá reducir el valor del parámetro memory para SQL Server. Una solución mejor incluso seria añadir memoria fisica a la máquina. Si observa tasas de aciertos al acceder a la caché significativamente mejores al añadir memoria, será recomendable seguir añadiendo memoria.

La opción de configuración memory controla la cantidad total de memoria que asignará SQL Server. En este total se incluye el código ejecutable de SQL Server (aproximadamente 2,5 Mb, incluidas las DLL cargadas por SQLSERVR.EXE), todas sus estructuras estáticas (estructuras asignadas para el número de objetos abiertos, bases de datos abiertas y el número máximo de conexiones de usuario), varios recursos globales y bloqueos. Después de contabilizar esas necesidades, la memoria restante estará disponible para el caché de los procedimientos almacenados y los datos.

Casi toda la memoria utilizada por SQL Server se asigna a partir de la cantidad especificada con sp_configure memory, con algunas excepciones. Si está activado tempdb in ram , esa memoria será independiente, más allá de la especificada por la opción memory.

 


Página Inicial

Por Luis Walter Reynoso para Ethek & Friends