Se ho 8 GB di RAM in un server ed eseguo 4 istanze di SQL Express, il limite di memoria totale utilizzato da SQL Server sarà 1 GB o 4 GB?
Ogni istanza può utilizzare fino a 1 GB di memoria per il pool di buffer . Ogni istanza può utilizzare un po 'più di 1 GB in totale perché non tutte le allocazioni di memoria passano attraverso il pool di buffer. Nel tuo caso, la memoria massima utilizzata dalle quattro istanze per il pool di buffer sarebbe di 4 GB.
Per confermare, ho avviato due istanze del Motore di database di SQL Server 2008 Express, eseguito alcune attività per caricare i pool di buffer (separati), quindi ho esaminato l'utilizzo della memoria per istanza in diversi modi, ad esempio utilizzando DBCC MEMORYSTATUS o contando il numero di buffer usando il DMV sys.dm_os_buffer_descriptors .
I seguenti numeri di utilizzo della memoria fisica sono stati ottenuti utilizzando query simultanee sul sistema DMV sys.dm_os_process_memory su ciascuna istanza del motore di database:
SELECT
dopm.physical_memory_in_use_kb
FROM sys.dm_os_process_memory AS dopm;
Produzione:
╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║ 1102872 ║ 1059812 ║
╚═══════════╩═══════════╝
Ognuno di questi è leggermente superiore a 1 GB in quanto l'utilizzo della memoria fisica totale include più di un semplice utilizzo del pool di buffer, come menzionato in precedenza.
Sarebbe consigliabile eseguire più istanze come questa per consentire a ciascun database di utilizzare meglio le risorse (supponendo che il server disponga di molte risorse)?
Se i database su ciascuna istanza sono funzionalmente indipendenti, è almeno fattibile eseguire più istanze di Express in questo modo, anche se è necessario prestare molta attenzione alla configurazione e la manutenzione potrebbe essere resa più complessa.
Potresti ricevere un servizio migliore utilizzando un'altra edizione, come la Developer Edition completa (e molto economica), se l'utilizzo previsto corrisponde alla licenza). Dovresti dire molto di più sulle circostanze per ottenere una risposta chiara su questo punto.
SQL Server Database Engine
significaA Single Instance
. Ogni volta che devi cambiare il server di dialogo di connessione a cui ti stai connettendo (es.localhost\dev
Vslocalhost\test
) che è una nuova "Istanza" o un nuovo "Motore". Ho pensato di chiarirlo.