Wenn ein Server über 8 GB RAM verfügt und ich 4 Instanzen von SQL Express ausführe, beträgt das von SQL Server verwendete Gesamtspeicherlimit 1 GB oder 4 GB?
Jede Instanz kann bis zu 1 GB Speicher für den Pufferpool verwenden . Jede Instanz kann insgesamt etwas mehr als 1 GB verwenden, da nicht alle Speicherzuordnungen über den Pufferpool erfolgen. In Ihrem Fall beträgt der maximale Arbeitsspeicher, der von den vier Instanzen für den Pufferpool verwendet wird, 4 GB.
Zur Bestätigung habe ich zwei Instanzen des SQL Server 2008 Express-Datenbankmoduls gestartet , einige Aktivitäten zum Laden der (separaten) Pufferpools ausgeführt und dann die Speicherauslastung pro Instanz auf verschiedene Arten untersucht, z. B. mit DBCC MEMORYSTATUS oder durch Zählen der Anzahl der Puffer unter Verwendung der DMV sys.dm_os_buffer_descriptors .
Die folgenden physischen Speicherbelegungsnummern wurden mit gleichzeitigen Abfragen des System-DMV sys.dm_os_process_memory für jede Instanz des Datenbankmoduls ermittelt:
SELECT
dopm.physical_memory_in_use_kb
FROM sys.dm_os_process_memory AS dopm;
Ausgabe:
╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║ 1102872 ║ 1059812 ║
╚═══════════╩═══════════╝
Jede davon übersteigt etwas 1 GB, da die gesamte physische Speichernutzung, wie bereits erwähnt, mehr als nur die Pufferpoolnutzung umfasst.
Wäre es ratsam, mehrere Instanzen wie diese auszuführen, damit jede Datenbank Ressourcen besser nutzen kann (vorausgesetzt, der Server verfügt über viele Ressourcen)?
Wenn die Datenbanken für jede Instanz funktionsunabhängig sind, können mindestens mehrere Express-Instanzen auf diese Weise ausgeführt werden. Sie müssen jedoch sorgfältig auf die Konfiguration achten, und die Wartung kann komplexer werden.
Wenn Sie eine andere Edition verwenden, z. B. die voll funktionsfähige (und sehr kostengünstige) Developer Edition, sind Sie möglicherweise besser bedient, wenn die beabsichtigte Verwendung mit der Lizenz übereinstimmt. Sie müssten viel mehr über die Umstände sagen, um eine klare Antwort auf diesen Punkt zu erhalten.
SQL Server Database Engine
MittelA Single Instance
. Jedes Mal, wenn Sie den Verbindungsdialogserver ändern müssen, zu dem Sie eine Verbindung herstellen (z. B.localhost\dev
vslocalhost\test
), handelt es sich um eine neue "Instanz" oder eine neue "Engine". Ich dachte nur, ich würde das klären.Jede Instanz zählt separat, da sie einen separaten Prozess hat.
quelle
In SQL Express kann das Datenbankmodul nur 1 GB RAM belegen , und jede Datenbank kann nicht größer als 10 GB sein.
4 Instanzen müssten sich also immer noch diese 1 GB RAM teilen.
Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx .
Eine ähnliche Diskussion hier über Stack Overflow besagt, dass dies übrigens die richtige Antwort ist, sodass Sie nicht abstimmen müssen: https://stackoverflow.com/questions/1169634/limitations-of-sql-server-express
Diese Seite sagt dasselbe, obwohl es sich um SQL Server Express 2005 handelt: http://www.edugeek.net/forums/windows-server-2000-2003/55183-sql-server-express-2005-memory-limit- per-instance.html
quelle
Maximum memory utilized (SQL Server Database Engine)
Beachten Sie, wie sie dort dieselbe Terminologie verwenden wie auf der Leitung:Maximum Compute Capacity Used by a Single Instance (SQL Server Database Engine)1
(Für diejenigen, die zu Hause spielen, bedeutet dies, dass es sich um dasselbe Maß handelt.) Msdn.microsoft.com/en-us/library/… und ich auch Ich liebe es, wie die Antwort auf SO, die verlinkt wurde, FALSCH FALSCH FALSCH ist. Beginnen Sie mit "1 Core oder 4 Sockets", die Editoren können nicht einmal richtig kopieren und einfügen.