Administración dinámica de memoria

El comportamiento predeterminado de administración de memoria del SQL Server Database Engine (Motor de base de datos de SQL Server) de Microsoft es adquirir toda la memoria que necesita sin provocar una escasez de memoria en el sistema. El Motor de base de datos lo consigue mediante las API de notificación de memoria de Microsoft Windows.

El espacio de dirección virtual de SQL Server se puede dividir en dos regiones diferenciadas: espacio ocupado por el grupo de búferes y el resto. Si el mecanismo AWE está activado, el grupo de búferes puede residir en la memoria asignada de AWE, lo que proporciona espacio adicional para las páginas de base de datos.

El grupo de búferes se utiliza como origen principal de asignación de memoria de SQL Server. Los componentes externos que residen dentro del proceso de SQL Server, como los objetos COM, y que no reconocen los recursos de administración de memoria de SQL Server, utilizan la memoria situada fuera del espacio de direcciones virtuales ocupado por el grupo de búferes.

Cuando SQL Server se inicia, calcula el tamaño del espacio de direcciones virtuales del grupo de búferes basándose en un número de parámetros, como la cantidad de memoria física en el sistema, el número de subprocesos de servidor y varios parámetros de inicio. SQL Server reserva la cantidad calculada de su espacio de direcciones virtuales del proceso para el grupo de búferes, pero sólo adquiere (confirma) la cantidad necesaria de memoria física para la carga actual.

A continuación, la instancia sigue adquiriendo la memoria que necesita para la carga de trabajo. A medida que se conectan más usuarios y se ejecutan consultas, SQL Server adquiere la memoria física adicional según la demanda. Una instancia de SQL Server sigue adquiriendo memoria física hasta que alcanza su asignación de max server memory o hasta que Windows indica que ya no existe más memoria libre; libera memoria cuando se supera el valor de min server memory y Windows indica que hay escasez de memoria libre.

Cuando se inician otras aplicaciones en un equipo que ejecuta una instancia de SQL Server, consumen memoria y la cantidad de memoria física disponible cae por debajo del destino de SQL Server. La instancia de SQL Server ajusta su consumo de memoria. Si se detiene otra aplicación y hay más memoria disponible, la instancia de SQL Server aumenta el tamaño de su asignación de memoria. SQL Server puede liberar y adquirir varios megabytes de memoria por segundo, lo que permite ajustarse rápidamente a los cambios de asignación de memoria.