Descubra qué base de datos en SQL Server 2005 usa la cantidad de RAM
12
Un amigo mío me preguntó hoy (tratando de calmar a un cliente suyo agitado) cómo podría averiguar en SQL Server 2005 qué base de datos usa cuánta memoria (en la RAM del servidor) en un momento dado.
¿Es eso posible? ¿Si es así, cómo? ¿Puede hacer esto con las herramientas incorporadas de SQL Server o necesita opciones adicionales de terceros?
Su cliente estaba nervioso porque su máquina dedicada SQL Server de repente usa todos menos 200 KB de sus 4 GB de RAM. Realmente no creo que sea un problema, pero como este tipo afirma que sucedió más o menos durante la noche, quiere saber qué causó este aumento en el uso de la memoria .....
Probablemente fue causado por una consulta que deseaba leer más páginas en el grupo de búferes, y el grupo de búferes tomaba más memoria para acomodar eso. Así es como se supone que funciona SQL Server. Si la caja experimenta presión de memoria, le pedirá a SQL Server que renuncie a algo de memoria, lo que hará. El cliente no debe preocuparse.
Puede usar el DMV sys.dm_os_buffer_descriptorspara ver qué cantidad de memoria de la agrupación de almacenamiento intermedio está siendo utilizada por qué base de datos. Este fragmento le dirá cuántas páginas limpias y sucias (modificadas desde el último punto de control o leídas del disco) de cada base de datos están en el grupo de búferes. Puede modificar más.
SELECT
(CASE WHEN ([is_modified] = 1) THEN 'Dirty' ELSE 'Clean' END) AS 'Page State',
(CASE WHEN ([database_id] = 32767) THEN 'Resource Database' ELSE DB_NAME (database_id) END) AS 'Database Name',
COUNT (*) AS 'Page Count'
FROM sys.dm_os_buffer_descriptors
GROUP BY [database_id], [is_modified]
ORDER BY [database_id], [is_modified];
GO
Su amigo también puede limitar la cantidad de RAM que tomará SQL porque, como Paul afirma anteriormente, SQL tomará toda la memoria que pueda.
Limite la cantidad de memoria utilizada por SQL Server a 2000 Mb (o lo que considere mejor).
--Enable advanced options:
USE master
EXEC sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
--Set the maximum amount of memory to 2000 MB:
USE master
EXEC sp_configure 'max server memory (MB)', 2000
RECONFIGURE WITH OVERRIDE
--Display the newly set configuration:
USE master
EXEC sp_configure 'max server memory (MB)'
--Set 'show advanced options' back to default:
USE master
EXEC sp_configure 'show advanced options', 0
RECONFIGURE WITH OVERRIDE
Gracias. Sabía cómo limitar la memoria, pero no sabía cómo averiguar qué base de datos está utilizando la cantidad de memoria de la agrupación de almacenamiento intermedio en un momento dado.
Su amigo también puede limitar la cantidad de RAM que tomará SQL porque, como Paul afirma anteriormente, SQL tomará toda la memoria que pueda.
Limite la cantidad de memoria utilizada por SQL Server a 2000 Mb (o lo que considere mejor).
fuente