Se eu tiver 8 GB de RAM em um servidor e executar 4 instâncias do SQL Express, o limite total de memória usado pelo SQL Server será de 1 GB ou 4 GB?
Cada instância pode usar até 1 GB de memória para o buffer pool . Cada instância pode usar um pouco mais de 1 GB no total, porque nem todas as alocações de memória passam pelo buffer pool. No seu caso, a memória máxima usada pelas quatro instâncias para o buffer pool seria de 4 GB.
Para confirmar, iniciei duas instâncias do SQL Server 2008 Express Database Engine, realizei alguma atividade para carregar os buffer pools (separados) e examinei a utilização da memória por instância de várias maneiras, por exemplo, usando o DBCC MEMORYSTATUS ou contando o número de buffers usando a DMV sys.dm_os_buffer_descriptors .
Os números de uso de memória física abaixo foram obtidos usando consultas simultâneas no DMV do sistema sys.dm_os_process_memory em cada instância do mecanismo de banco de dados:
SELECT
dopm.physical_memory_in_use_kb
FROM sys.dm_os_process_memory AS dopm;
Saída:
╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║ 1102872 ║ 1059812 ║
╚═══════════╩═══════════╝
Cada uma delas tem um pouco mais de 1 GB, pois o uso total de memória física inclui mais do que apenas o uso de buffer pool, conforme mencionado anteriormente.
Seria aconselhável executar várias instâncias como essa para permitir que cada banco de dados faça melhor uso dos recursos (supondo que o servidor tenha muitos recursos)?
Se os bancos de dados em cada instância forem funcionalmente independentes, é pelo menos viável executar várias instâncias do Express dessa maneira, embora você precise prestar muita atenção à configuração e manutenção, isso pode se tornar mais complexo.
Você poderá ser melhor atendido com outra edição, como a Developer Edition, com todos os recursos (e muito barata), se o uso pretendido corresponder à licença). Você precisaria dizer muito mais sobre as circunstâncias para obter uma resposta clara sobre esse ponto.
SQL Server Database Engine
significaA Single Instance
. Sempre que você precisar alterar o servidor de diálogo de conexão ao qual está se conectando (por exemplo,localhost\dev
vslocalhost\test
), isso é uma nova "Instância" ou um novo "Mecanismo". Só pensei em esclarecer isso.Cada instância conta separada, pois possui um processo separado.
fonte
No SQL Express, o mecanismo de banco de dados pode consumir apenas 1 GB de RAM e qualquer banco de dados não pode ser maior que 10 GB.
Portanto, 4 instâncias ainda precisam compartilhar esse 1 GB de RAM.
Você pode descobrir muito mais em http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx .
Uma discussão semelhante aqui no Stack Overflow diz que esta é a resposta certa, então não há necessidade de voto negativo: https://stackoverflow.com/questions/1169634/limitations-of-sql-server-express
Esta página diz o mesmo, mesmo que seja sobre o SQL Server Express 2005: http://www.edugeek.net/forums/windows-server-2000-2003/55183-sql-server-express-2005-memory-limit- por instância.html
fonte
Maximum memory utilized (SQL Server Database Engine)
Observe como eles usam a mesma terminologia existente na linha:Maximum Compute Capacity Used by a Single Instance (SQL Server Database Engine)1
(para aqueles que jogam em casa, o ponto é que eles têm a mesma medida) msdn.microsoft.com/en-us/library/… e eu também adoro como a resposta no SO que foi vinculada é ERRADA ERRADA ERRADA. Comece com "1 núcleo ou 4 soquetes", os editores não podem nem copiar e colar corretamente.