Opciones de memoria del servidor

Actualizado: 14 de abril de 2006

Utilice las dos opciones de memoria del servidor min server memory (memoria mínima del servidor) y max server memory (memoria máxima del servidor) para volver a configurar la cantidad de memoria (en MB) del grupo de búferes que utiliza una instancia de Microsoft SQL Server.

De manera predeterminada, SQL Server puede cambiar sus requisitos de memoria de manera dinámica basándose en los recursos del sistema disponibles. El valor predeterminado de min server memory es 0 y el valor predeterminado de max server memory es 2147483647. La cantidad mínima de memoria que puede especificar para max server memory es 16 MB.

[!NOTA] Si establece el valor max server memory en el valor mínimo, puede reducir drásticamente el rendimiento de SQL Server e incluso impedir que se inicie. Si no puede iniciar SQL Server tras cambiar esta opción, inicie esta herramienta mediante la opción de inicio –f y restablezca la opción max server memory a su valor anterior. Para obtener más información, vea Usar las opciones de inicio del servicio SQL Server.

Cuando SQL Server utiliza la memoria de manera dinámica, realiza una consulta periódica en el sistema para determinar la cantidad de memoria física libre. En Microsoft Windows 2000, SQL Server aumenta o reduce la caché del búfer para mantener entre 4 y 10 MB de memoria física libre, en función de la actividad del servidor. Si se mantiene esta memoria libre se evita la paginación en Windows 2000. Si hay menos memoria libre, SQL Server libera memoria para Windows 2000. Si hay más memoria libre, SQL Server asigna memoria al grupo de búferes. SQL Server sólo agrega memoria al grupo de búferes cuando su carga de trabajo requiere más memoria. Un servidor inactivo no aumenta el tamaño del grupo de búferes.

En Windows Server 2003, SQL Server utiliza la API de notificación de memoria QueryMemoryResourceNotification para determinar el momento en que el grupo de búferes puede asignar y liberar memoria.

Es aconsejable permitir a SQL Server utilizar memoria dinámicamente; sin embargo, puede establecer las opciones de memoria manualmente y restringir la cantidad de memoria a la que SQL Server puede obtener acceso. Antes de establecer la cantidad de memoria para SQL Server, determine la configuración de memoria apropiada restando de la memoria física total la memoria necesaria para Windows 2000 o Windows Server 2003 y todas las demás instancias de SQL Server (y otros usos del sistema, si el equipo no está dedicado totalmente a SQL Server). Esta diferencia es la cantidad de memoria máxima que puede asignar a SQL Server.

Establecer manualmente las opciones de memoria

Hay dos métodos principales para establecer manualmente las opciones de memoria de SQL Server:

  • En el primer método, se establece el mismo valor para las opciones min server memory y max server memory. Este valor corresponde a la cantidad de memoria fija que se asigna al grupo de búferes de SQL Server después de alcanzarse el valor.
  • En el segundo método, las opciones min server memory y max server memory se establecen de manera que abarquen un intervalo de valores de memoria. Este método es útil en los casos en que los administradores de bases de datos o de sistemas desean configurar una instancia de SQL Server junto con los requisitos de memoria de otras aplicaciones que se ejecutan en el mismo equipo.

Utilice min server memory para garantizar una cantidad mínima de memoria disponible para el grupo de búferes de una instancia de SQL Server. SQL Server no asignará inmediatamente la cantidad de memoria especificada en min server memory durante el inicio. No obstante, cuando el uso de memoria ha alcanzado este valor debido a una carga del cliente, SQL Server no puede liberar la memoria del grupo de búferes asignado a menos que se reduzca el valor de min server memory.

[!NOTA] No se garantiza que SQL Server asigne la cantidad de memoria especificada en min server memory. Si la carga en el servidor no precisa nunca que se asigne la cantidad de memoria especificada en min server memory, SQL Server se ejecutará con menos memoria.

Utilice max server memory para impedir que el grupo de búferes de SQL Server utilice más cantidad de memoria que la especificada, lo que permite utilizar la memoria restante para iniciar rápidamente otras aplicaciones. SQL Server no asigna inmediatamente la memoria especificada en max server memory durante el inicio. El uso de memoria se aumenta a medida que SQL Server la necesita hasta alcanzar el valor especificado en max server memory. SQL Server no puede superar este uso de memoria a no ser que se aumente el valor de max server memory.

Antes de reducir el valor de max server memory, utilice el Monitor de rendimiento para examinar el objeto de rendimiento SQLServer:Buffer Manager cuando esté sometido a una carga y observe los valores actuales de los contadores Stolen pages y Reserved pages. Estos contadores informan de la memoria como el número de páginas de 8K. El valor de max server memory debe establecerse por encima de la suma de estos dos valores para evitar errores de memoria insuficiente. El valor razonablemente más bajo de max server memory (en MB) es ([Stolen pages] + [Reserved pages])/ 100. Para reducir el valor de max server memory, es posible que tenga que reiniciar SQL Server para liberar la memoria.

Maximizar el rendimiento para aplicaciones de red

Si se selecciona la opción de conexión de red Maximizar el rendimiento para aplicaciones de red, el sistema operativo da prioridad a las aplicaciones que realizan operaciones de E/S almacenadas en el búfer copiando sus páginas de E/S en la caché del sistema de archivos. Esta opción puede limitar la memoria disponible para que SQL Server funcione con normalidad.

Para comprobar la configuración actual de su sistema operativo

  1. Haga clic en Inicio, Panel de control, haga doble clic en Conexiones de red y, a continuación, haga doble clic en Conexión de área local.

  2. En la ficha General, haga clic en Propiedades, seleccione Compartir impresoras y archivos para redes Microsoft y, a continuación, haga clic en Propiedades.

  3. Si Maximizar el rendimiento para aplicaciones de red está seleccionado, elija cualquier otra opción, haga clic en Aceptar y, a continuación, cierre el resto de cuadros de diálogo.

Memoria AWE en Windows Server 2003

En Windows Server 2003, SQL Server 2005 puede utilizar la memoria de extensiones de ventana de dirección (AWE) para ayudar a equilibrar la carga de sus propios requisitos de memoria con los del sistema operativo. Este equilibrio entre SQL Server y el sistema operativo está sujeto a las restricciones de las opciones min server memory y max server memory. Si el hardware del servidor admite el uso de agregar memoria sin interrupción, puede agregar más memoria física al servidor sin tener que reiniciar. Para obtener más información acerca de la opción de configuración awe enabled, vea awe enabled (opción). Para obtener más información, vea Agregar memoria sin interrupción.

[!NOTA] En Windows Server 2003, la memoria AWE dinámica está admitida en servidores con menos memoria física que el límite de memoria virtual configurado. En Windows 2000 era necesario que la memoria física disponible excediera la memoria virtual para poder habilitar AWE.

Lo ideal sería poder asignar toda la memoria posible a SQL Server sin provocar el intercambio de páginas en el disco. El umbral varía en función del sistema. Por ejemplo, en un sistema de 32 GB exclusivamente dedicados a SQL Server, 30-31 GB sería un umbral máximo aceptable para SQL Server; en un sistema de 64 GB, 60-62 GB sería el umbral adecuado.

[!NOTA] A medida que aumente la cantidad de memoria de SQL Server, asegúrese de que haya suficiente espacio en disco para que el archivo de compatibilidad para memoria virtual (Pagefile.sys) del sistema operativo pueda aumentar para alojar memoria adicional. Para obtener más información acerca del archivo de compatibilidad para memoria virtual, vea la documentación de Windows 2000 y Windows Server 2003.

Si es necesario, utilice las estadísticas del Monitor de sistema de Windows como ayuda para ajustar el valor de la memoria. Cambie este valor sólo cuando agregue o quite memoria, o cuando desee cambiar el uso del sistema.

Administrador de memoria virtual

Los sistemas operativos de 32 bits, como Windows 2000 y Windows Server 2003, proporcionan acceso a un espacio de dirección virtual de 4 GB. Los 2 GB de la parte baja de la memoria virtual son privados para cada proceso y están disponibles para el uso de las aplicaciones. Los 2 GB de la parte alta se reservan para uso del sistema operativo. Todas las ediciones de sistemas operativos a partir de Microsoft Windows XP Professional, inclusive Windows Server 2003, disponen de un modificador de boot.ini que puede proporcionar a las aplicaciones acceso a 3 GB de memoria virtual, quedando el sistema operativo limitado a 1 GB. Vea la documentación de Windows para obtener más información acerca del uso de la configuración de memoria del modificador /3GB.

[!NOTA] En Windows Server 2003, PAE sólo se habilita automáticamente si el servidor usa dispositivos de adición de memoria sin interrupción. En este caso, no es necesario usar el modificador /PAE en un sistema configurado para usar dispositivos de este tipo. En todos los demás casos, debe usar el modificador /PAE en el archivo Boot.ini para aprovechar la memoria superior a 4 GB.

El Administrador de memoria virtual de Windows (VMM) asigna el espacio de 4 GB para direcciones a la memoria física disponible. La cantidad de memoria física admitida se ha aumentado con los sistemas operativos Windows Server 2003. Por lo tanto, la cantidad de memoria que está accesible a AWE depende del sistema operativo que utilice:

  • Windows Server 2003, Standard Edition admite hasta 4 GB de memoria física.
  • Windows Server 2003, Enterprise Edition admite hasta 32 GB de memoria física.
  • Windows Server 2003, Datacenter Edition admite hasta 64 GB de memoria física.

Una aplicación de Win32, como SQL Server, percibe sólo direcciones virtuales o lógicas, no direcciones físicas. La cantidad de memoria física que utiliza una aplicación en un momento dado (el espacio de trabajo) está determinada por la memoria física disponible y el VMM. La aplicación no puede controlar directamente la residencia de la memoria.

Las ediciones de 32 bits de Windows 2000 Advanced Server y Windows 2000 Datacenter Server y de Windows Server 2003, Enterprise Server y Windows Server 2003, Datacenter Server tienen la capacidad de sobrepasar el límite de 4 GB mediante Physical Addressing Extensions (PAE) de Intel. El uso del modificador /PAE en el archivo de configuración boot.ini de Windows proporciona un acceso a la memoria física superior al límite de 4 GB. Se trata de un requisito obligatorio para el acceso de memoria AWE por encima de 4 GB. Para obtener más información acerca de cómo usar esta configuración de memoria para Windows 2000 y Windows Server 2003, vea la documentación de Windows.

Los sistemas de direcciones virtuales, como Windows 2000 o Windows Server 2003, permiten la asignación excesiva de memoria física, de modo que la proporción de memoria virtual respecto de la física puede exceder de 1:1. Como resultado, pueden ejecutarse programas grandes en equipos con distintas configuraciones de memoria física. No obstante, el uso de una cantidad de memoria virtual significativamente superior al promedio combinado de los espacios de trabajo de todos los procesos provoca un rendimiento bajo.

min server memory y max server memory son opciones avanzadas. Si utiliza el procedimiento almacenado del sistema sp_configure para cambiar estos valores, podrá cambiarlos sólo si show advanced options tiene establecido el valor 1. Estos valores tienen efecto inmediatamente (sin necesidad de reiniciar el servidor).

Ejecutar varias instancias de SQL Server

Cuando esté ejecutando varias instancias de Database Engine (Motor de base de datos), existen tres maneras con las que puede administrar la memoria:

  • Utilizar max server memory para controlar el uso de memoria. Establezca los valores máximos de cada instancia, teniendo cuidado de que la asignación total no sea mayor que la memoria física total de su equipo. Es buena idea proporcionar a cada instancia memoria proporcional a la carga de trabajo o al tamaño de la base de datos esperados. Este método tiene la ventaja de que cuando se inician nuevos procesos o instancias, habrá memoria libre para ellos de forma inmediata. El inconveniente es que si no está ejecutando todas las instancias, ninguna de las instancias que se están ejecutando podrá utilizar el resto de la memoria libre.
  • Utilizar min server memory para controlar el uso de memoria. Establezca la configuración mínima de cada instancia, de manera que la suma de estos mínimos sea 1-2 GB menos que la memoria física total de su equipo. De nuevo, puede establecer estos mínimos proporcionalmente a la carga de trabajo que se espera por cada instancia. Este método tiene la ventaja de que si no se ejecutan todas las instancias a la vez, las que se estén ejecutando pueden utilizar el resto de la memoria libre. Este método también resulta útil cuando en el equipo se está ejecutando otro proceso que consuma mucha memoria, puesto que asegura que SQL Server recibirá, al menos, una cantidad de memoria razonable. El inconveniente es que cuando se inicia una nueva instancia (o cualquier otro proceso), es posible que pase algún tiempo hasta que las instancias que se están ejecutando liberen memoria, especialmente si para ello deben escribir páginas modificadas en sus bases de datos. También es posible que tenga que incrementar el tamaño del archivo de paginación de manera significativa.
  • No hacer nada (no se recomienda). Las primeras instancias que se presenten con una carga de trabajo intentarán asignar toda la memoria. Puede ser que las instancias inactivas o las que se inicien después terminen ejecutándose con una cantidad de memoria disponible mínima. SQL Server 2005 no intenta equilibrar el uso de memoria en todas las instancias. Sin embargo, todas las instancias responderán a las señales de notificación de memoria de Windows para ajustar el tamaño de sus grupos de búferes. En cuanto al SP1 de Windows Server 2003, Windows no equilibra la memoria entre las aplicaciones con la API de notificación de memoria. Simplemente proporciona informes globales acerca de la disponibilidad de memoria del sistema.

Estos valores se pueden cambiar sin tener que reiniciar las instancias, por tanto, puede experimentar fácilmente para encontrar la mejor configuración para el patrón de uso.

Vea también

Conceptos

Supervisar y optimizar para obtener un mayor rendimiento
Establecer las opciones de configuración del servidor
Habilitar memoria AWE para SQL Server

Otros recursos

RECONFIGURE (Transact-SQL)
Mapa de documentación de réplica
sp_configure (Transact-SQL)

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

14 de abril de 2006

Contenido nuevo:
  • Se agregó la nota relativa a Windows Server 2003 y PAE.

5 de diciembre de 2005

Contenido nuevo:
  • Información sobre el valor razonablemente más bajo de max server memory.
  • Se agregó la sección Ejecutar varias instancias de SQL Server.