Habilitar memoria AWE para SQL Server

Esta característica se quitará en la versión siguiente de Microsoft SQL Server. No utilice esta característica en nuevos trabajos de desarrollo y modifique lo antes posible las aplicaciones que actualmente la utilizan.

Las extensiones de ventana de dirección (AWE) permiten a los sistemas operativos de 32 bits tener acceso a grandes cantidades de memoria. El sistema operativo expone la AWE y se implementa con pocas diferencias en Microsoft Windows 2000 Server y Windows Server 2003. AWE se habilita mediante la awe enabled (opción).

Usar memoria asignada para AWE con Windows 2000 Server

Las instancias de Microsoft SQL Server que se ejecutan en Windows 2000 asignan la memoria durante el inicio de SQL Server de acuerdo con la siguiente secuencia de eventos:

  • Si la memoria física disponible es menor que el espacio de direcciones virtuales del modo de usuario, AWE no puede activarse. En este caso, SQL Server no se ejecuta en el modo AWE, independientemente de la configuración de la opción Con AWE habilitada.

  • Si la memoria física disponible es mayor que el espacio de direcciones virtuales del modo de usuario, AWE puede activarse.

    • Si la memoria física disponible es mayor que el valor de la opción de max server memory, la instancia de SQL Server bloquea la cantidad de memoria especificada en max server memory.

    • Si la memoria física disponible es menor que el valor de la opción max server memory o si la opción max server memory no ha sido establecida, la instancia de SQL Server bloquea toda la memoria disponible excepto 256 megabytes (MB).

  • Una vez asignada, la memoria asignada para AWE no puede liberarse hasta que se cierre SQL Server.

Configurar las opciones de memoria

Es muy recomendable establecer un valor para max server memory cada vez que habilite AWE. Cuando la opción AWE habilitada está establecida en 1 (y la memoria física es mayor que el espacio de procesos del modo de usuario), las instancias de SQL Server que se ejecutan en Windows 2000 bloquean casi toda la memoria disponible (o el valor de Memoria de servidor máxima si la opción se ha establecido) cuando se inicia el servidor. Si la opción max server memory no está establecida, otras aplicaciones o instancias de SQL Server tienen disponible menos de 128 MB de memoria física.

El bloque de memoria asignada por AWE no puede intercambiarse en los archivos del sistema de paginación. Windows tiene que intercambiar otras aplicaciones si es necesario usar más memoria física, lo que puede afectar al rendimiento de estas otras aplicaciones.

Para evitar que merme el rendimiento de otras aplicaciones, configure max server memory para dejar cierta cantidad de memoria libre para las distintas necesidades de otras aplicaciones y del sistema operativo. Puede determinar la cantidad de memoria que puede asignar sin problemas a las instancias de SQL Server identificando la cantidad de memoria disponible después de iniciar todas las demás aplicaciones que se van a utilizar en el equipo.

Nota

En Windows 2000 Server, Memoria de servidor mínima se omite para SQL Server AWE.

Utilice el contador Memoria total del servidor (KB) del Monitor de rendimiento de SQL Server para determinar cuánta memoria ha asignado la instancia de SQL Server que se ejecuta en modo AWE, o seleccione el uso de memoria de sysperfinfo.

Para obtener más información, vea Supervisar el uso de la memoria.

Ejecutar varias instancias de SQL Server con AWE

Si el servidor ejecuta Windows 2000, cada instancia debe tener una configuración de Memoria de servidor máxima. Puesto que SQL Server no admite la asignación dinámica de la memoria asignada para AWE cuando se ejecuta en sistemas operativos Windows 2000, es recomendable que la opción Memoria de servidor máxima se establezca para cada instancia.

La suma de los valores max server memory de todas las instancias debe ser inferior a la memoria física total del equipo. Si la suma es mayor que la memoria física total, algunas instancias no se inician o tienen acceso a menos memoria que la especificada por la configuración de max server memory. Por ejemplo, suponga que un equipo tiene 16 gigabytes (GB) de memoria física y tres instancias instaladas de SQL Server. Además, el valor de max server memory está establecido en 8 GB para cada instancia. Si detiene y reinicia las tres instancias, la asignación de memoria es la siguiente:

  1. La primera instancia tiene acceso a 8 GB de memoria física.

  2. La segunda instancia se inicia, pero tiene acceso a algo menos de 8 GB de memoria física (hasta 128 MB menos).

  3. La tercera instancia se inicia en el modo de memoria dinámica y tiene acceso a 256 MB o menos memoria física.

Para obtener más información, vea Administrar la memoria para bases de datos de gran tamaño.

Usar memoria asignada para AWE con Windows Server 2003

SQL Server admite la asignación dinámica de la memoria de AWE en Windows Server 2003. Durante el inicio, SQL Server sólo reserva una pequeña parte de la memoria asignada para AWE. Si se necesita más memoria asignada para AWE, el sistema operativo la asigna de forma dinámica a SQL Server. De forma similar, si se necesitan menos recursos, SQL Server puede devolver memoria asignada para AWE al sistema operativo para que éste la utilice en otros procesos o aplicaciones. Para obtener más información sobre la opción de configuración Con AWE habilitada, vea awe enabled (opción).

La cantidad de memoria física admitida ha aumentado con la incorporación de la familia Windows Server 2003. La memoria física a la que tiene acceso AWE depende del sistema operativo que esté utilizando. La siguiente lista proporciona la máxima memoria física a la que tiene acceso cada sistema operativo Windows Server 2003 en el momento en el que se escribió este documento.

  • Windows Server 2003, Standard Edition admite una memoria física de hasta 4 GB.

  • Windows Server 2003, Enterprise Edition admite una memoria física de hasta 32 GB.

  • Windows Server 2003, Datacenter Edition admite una memoria física de hasta 64 GB.

Configurar las opciones de memoria

SQL Server asigna de forma dinámica memoria AWE asignada cuando se ejecuta con cualquiera de las ediciones del sistema operativo Windows Server 2003. Es decir, el grupo de búferes puede administrar dinámicamente la memoria asignada para AWE (dentro de los límites establecidos en las opciones min server memory y max server memory) para equilibrar el uso de la memoria de SQL Server con los requisitos generales del sistema.

Cuando se habilita AWE, SQL Server siempre intenta utilizar la memoria asignada para AWE. Esto se aplica a todas las configuraciones de memoria, incluidos los equipos configurados para proporcionar a las aplicaciones menos de 3 GB de espacio de direcciones en el modo de usuario.

  • Se recomienda configurar AWE como el modo de memoria predeterminado para SQL Server en ejecución en Windows Server 2003. La característica Agregar memoria sin interrupción requiere que AWE se habilite durante el inicio de SQL Server. Para obtener información, vea Agregar memoria sin interrupción.

Nota

AWE no es necesario y no se puede configurar en sistemas operativos de 64 bits.

  • Puesto que la memoria asignada para AWE es compatible con cantidades inferiores a 3 GB, puede definir los valores de min server memory y max server memory dentro del intervalo de memoria física, o bien utilizar los valores predeterminados para ambas opciones.

  • Puede contemplar configurar max server memory para SQL Server con el fin de garantizar memoria adicional para otras aplicaciones que funcionen en el equipo. Si bien SQL Server puede liberar dinámicamente memoria asignada para AWE, no es posible intercambiar en el archivo de paginación la cantidad actual de memoria asignada para AWE.

Para que la opción AWE esté disponible en una instancia de SQL Server, utilice sp_configure para establecer la opción Con AWE habilitada en 1 y, a continuación, reinicie SQL Server.

Para obtener más información sobre min server memory y max server memory, vea Opciones de memoria del servidor.

Para habilitar AWE, debe configurar la directiva Lock Pages in Memory. Para obtener más información, vea Cómo habilitar la opción de bloqueo de páginas en memoria (Windows).

Ejemplo

En el ejemplo siguiente se muestra cómo activar AWE y configurar un límite de 1 GB para min server memory y 6 GB para max server memory.

En primer lugar, configure AWE:

sp_configure 'show advanced options', 1
RECONFIGURE
GO

sp_configure 'awe enabled', 1
RECONFIGURE
GO

Después de reiniciar SQL Server, se escribe un mensaje de error en el registro de errores de SQL Server en el que se indica que las extensiones de ventana de dirección (AWE) están habilitadas.

Seguidamente, configure la memoria:

sp_configure 'min server memory', 1024
RECONFIGURE
GO

sp_configure 'max server memory', 6144
RECONFIGURE
GO

En este ejemplo, la configuración de la memoria indica al grupo de búferes que administre dinámicamente la memoria asignada para AWE entre 1 GB y 6 GB. Si otras aplicaciones necesitan memoria adicional, SQL Server puede liberar la memoria asignada para AWE si no es necesaria. En este ejemplo, sólo puede liberarse un máximo de 1 GB de la memoria asignada para AWE.

La memoria dinámica de AWE también permite a SQL Server aumentar la memoria si se agrega más memoria a un equipo compatible con la característica Agregar memoria sin interrupción. Disponible en Windows Server 2003 3, en sus ediciones Enterprise y Datacenter, la característica Agregar memoria sin interrupción permite agregar memoria mientras el equipo está ejecutando. Por ejemplo, suponga que SQL Server se ejecuta en Windows Server 2003, Enterprise Edition, y se inicia en un equipo con 16 GB de memoria física. El sistema operativo está configurado para limitar a 2 GB el espacio para direcciones en la memoria virtual de las aplicaciones; AWE se ha activado en SQL Server. Posteriormente, el administrador del sistema agrega 16 GB de memoria mientras el equipo está ejecutándose. SQL Server reconoce inmediatamente la memoria adicional y, si es necesario, puede aprovecharse de ella.

Para obtener más información acerca de cómo utilizar AWE, vea la documentación de Windows Server 2003.

Ejecutar varias instancias de SQL Server con AWE

Si está ejecutando varias instancias de SQL Server en el mismo equipo y cada instancia utiliza memoria asignada para AWE, debe asegurarse de que las instancias tengan el rendimiento esperado.

Si el servidor ejecuta Windows Server 2003, cada instancia debe tener una configuración de Cantidad mínima de memoria del servidor. Cuando SQL Server se ejecuta en Windows Server 2003, admite la administración dinámica de la memoria asignada para AWE, por lo que recomendamos configurar la opción Memoria de servidor mínima para cada instancia. Debido a que la memoria asignada para AWE no puede intercambiarse en el archivo de paginación, la suma de los valores de min server memory de todas las instancias debe ser menor que la memoria física total del equipo.

La opción min server memory no fuerza a SQL Server a adquirir una cantidad de memoria mínima al inicio. La memoria se asigna a petición en función de la carga de trabajo de la base de datos. Sin embargo, una vea se alcanza el umbral de min server memory, SQL Server no libera memoria si ello deja a SQL Server con menos de esa cantidad. Por tanto, para garantizar que cada instancia haya asignado una cantidad de memoria al menos igual que el valor de min server memory, se recomienda ejecutar una carga de servidor de bases de datos justo después del inicio. Durante la actividad normal del servidor, varía la cantidad de memoria disponible por instancia, pero nunca es inferior al valor de min server memory disponible para cada instancia.

Puede establecer max server memory o dejar la opción configurada con el valor predeterminado. Si deja max server memory con el valor predeterminado, las instancias de SQL Server compiten por obtener más memoria.

Usar agrupaciones en clústeres de conmutación por error con AWE

Si utiliza memoria AWE y clústeres de conmutación por error de SQL Server, asegúrese de que la suma de los valores Memoria de servidor máxima de todas las instancias es menor que la memoria física más pequeña disponible en cualquiera de los servidores de los clústeres de conmutación por error. Si el nodo de conmutación por error tiene menos memoria física que el original, las instancias de SQL Server podrían producir errores al iniciarse o podrían iniciarse con menos memoria de la que tenían en el nodo original.