Si tengo 8 GB de RAM en un servidor y ejecuto 4 instancias de SQL Express, ¿el límite de memoria total utilizado por SQL Server será de 1 GB o 4 GB?
Cada instancia puede usar hasta 1 GB de memoria para el grupo de búferes . Cada instancia puede usar un poco más de 1 GB en total porque no todas las asignaciones de memoria pasan por el grupo de búferes. En su caso, la memoria máxima utilizada por las cuatro instancias para el grupo de búferes sería de 4 GB.
Para confirmar, inicié dos instancias del Motor de base de datos Express de SQL Server 2008 , realicé alguna actividad para cargar los grupos de búferes (separados) y luego miré la utilización de la memoria por instancia de varias maneras, por ejemplo, utilizando DBCC MEMORYSTATUS o contando el número de buffers utilizando el DMV sys.dm_os_buffer_descriptors .
Los números de uso de memoria física a continuación se obtuvieron mediante consultas simultáneas contra el sistema DMV sys.dm_os_process_memory en cada instancia del motor de base de datos:
SELECT
dopm.physical_memory_in_use_kb
FROM sys.dm_os_process_memory AS dopm;
Salida:
╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║ 1102872 ║ 1059812 ║
╚═══════════╩═══════════╝
Cada uno de estos tiene un poco más de 1 GB, ya que el uso total de la memoria física incluye más que solo el uso de la agrupación de almacenamiento intermedio, como se mencionó anteriormente.
¿Sería aconsejable ejecutar múltiples instancias como esta para permitir que cada base de datos haga un mejor uso de los recursos (suponiendo que el servidor tenga muchos recursos)?
Si las bases de datos en cada instancia son funcionalmente independientes, entonces es al menos viable ejecutar múltiples instancias de Express de esta manera, aunque deberá prestar especial atención a que la configuración y el mantenimiento pueden ser más complejos.
Puede que le sirva mejor usar otra edición, como la Edición para desarrolladores con todas las funciones (y muy económica), si el uso previsto coincide con la licencia). Tendría que decir mucho más sobre las circunstancias para obtener una respuesta clara sobre este punto.
SQL Server Database Engine
mediosA Single Instance
. Cada vez que tiene que cambiar el servidor de diálogo de conexión al que se está conectando (p. Ej.,localhost\dev
Vslocalhost\test
) que es una nueva "Instancia" o un nuevo "Motor". Solo pensé que aclararía eso.Cada instancia cuenta por separado ya que tiene un proceso separado.
fuente
En SQL Express, el motor de la base de datos solo puede consumir 1 GB de RAM , y cualquier base de datos no puede ser mayor de 10 GB.
Entonces, 4 instancias aún tendrían que compartir esa RAM de 1 GB.
Puede encontrar mucho más en http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx .
Una discusión similar aquí sobre Stack Overflow dice que esta es la respuesta correcta, por cierto, por lo que no es necesario votar a favor: https://stackoverflow.com/questions/1169634/limitations-of-sql-server-express
Esta página dice lo mismo, aunque se trata de SQL Server Express 2005: http://www.edugeek.net/forums/windows-server-2000-2003/55183-sql-server-express-2005-memory-limit- por instancia.html
fuente
Maximum memory utilized (SQL Server Database Engine)
Observe cómo usan la misma terminología allí que en la línea:Maximum Compute Capacity Used by a Single Instance (SQL Server Database Engine)1
(para aquellos que juegan en casa, el punto es que son la misma medida) msdn.microsoft.com/en-us/library/… y yo también me encanta cómo la respuesta en SO que estaba vinculada es MAL MAL MAL MAL. Comience con "1 núcleo o 4 sockets", los editores ni siquiera pueden copiar y pegar correctamente.