leuchtmast
Goto Top

Tatsächliche verwendeter Speicher MS SQL Express 2008

Hallo zusammen,

gibt es eine Möglichkeit den gerade tatsächlich verwendeten Speicher eines MS SQL 2008 Express Datenbankserver auszulesen?
Die Expressversion ist ja auf 1 GB beschränkt. Mich würde interessieren, wieviel davon tatsächlich benutzt wird.

Im Taskmanager oder im SQL Server Managenment Studio wird mir nur der gesamte verwendbare Speicher angezeigt (~1,5GB).

Hintergrund ist, das unsere Warenwirtschaft damit läuft und wir immer wieder Engpässe haben. Hier wäre es hilfreich zu wissen, ob das Problem einfach an der Speicherbegrenzung liegt (Maximal 20 Benutzer, Datenbankgröße ~ 3GB)

Gruß Wolfgang.

Content-Key: 256084

Url: https://administrator.de/contentid/256084

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: vossi31
vossi31 27.11.2014, aktualisiert am 28.11.2014 um 09:55:29 Uhr
Goto Top
Hallo,

wenn Du im Taskmanager den Prozess sqlservr.exe anschaust siehts Du den verwendeten Speicher.
Bei einer 3GB DB kann es gut sein, dass das die Bremse ist.
Bei uns war ein weiteres Argument für den Wechsel von der Express zur Standard, dass Werkzeuge vorhanden sind um die DB regelmäßig automatisch zu "reorganisieren". Wir haben von SQL2005 Express auf 2008 Standard gewechselt und es ist deutlich besser geworden. Allerdings ist auch der "Unterbau" jetzt neuer.

Henning
Mitglied: Logan000
Logan000 28.11.2014 um 08:58:25 Uhr
Goto Top
Moin moin,

Zitat von @vossi31:
wenn Du im Taskmanager den Prozess sqlservr.exe anschaust siehts Du den verwendeten Speicher.
Jup, da würd ich auch schauen.
Bei einer 3GB DB kann es gut sein, dass das die Bremse ist.
Ja. Wenn man einepPerformate DB möchte ist man gut beraten dafür zu sorgen das der SQL Server ausreihend RAM hat (unterstützt) um die gesamte DB aufzunehmen.

Gruß L.
Mitglied: AndreasHoster
Lösung AndreasHoster 28.11.2014 aktualisiert um 09:59:50 Uhr
Goto Top
Die 1GB Begrenzung trifft nur den SQL Buffer Pool (das ist der Bereich, den der SQL Server zum Cachen nimmt), deswegen siehst Du im Taskmanager auch mehr, weil der SQL Server noch fürs Programm Platz braucht und noch ein paar andere interne Buffer hat.

Zum Nachschauen, wieviel von welcher Datenbank gecached wird, kann man folgende Query verwenden:
SELECT DB_NAME(database_id) AS [Database Name],
COUNT(*) * 8/1024.0 AS [Cached Size (MB)]
FROM sys.dm_os_buffer_descriptors
WHERE database_id > 4 -- system databases
AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC;
Ein weiterer Anhaltspunkt ist die Page Life Expectancy, der Wert gibt an, wie lange eine Datenseite im Cache ist (in Sekunden), bevor sie von neuen Daten verdrängt wird. Je höher umso besser.
SELECT OBJECT_NAME, cntr_value AS [Page Life Expectancy]
FROM sys.dm_os_performance_counters
where counter_name = N'Page life expectancy';  
Wir haben auf unserem ERP System auf der Datenbank eine PLE von über 60000.
Bei Werten unter 1000 ist der Cache deutlich zu klein.
Aus der PLE kann man auch auf die I/O Belastung schliessen. Bei 1 GB Cache und eine PLE von 100 (Beispielswert), bedeutet das, daß jede Seite im Cache nach 100 Sekunden von einer neugeladenen verdrängt wird, also in 100 Sekunden der 1GB Cache einmal durchläuft, das sind 10MB/s Lesezugriffe.
Mitglied: leuchtmast
leuchtmast 28.11.2014 um 10:01:29 Uhr
Goto Top
Super! Vielen Dank!

Der Cache liegt im Moment bei etwa 650 MB und der PLE bei knapp 1200. Ich werde das über den Tag beobachten wenn mehr Mitarbeiter an der Datenbank arbeiten.

Gruß Wolfgang