it-swarm.com.de

Warum verwendet SQL Server 2012 Express 9,5 GB RAM auf meinem Server)?

Ich erstelle eine Anwendung, in die ich SQL Server 2012 Express als primären Datenspeicher einbetten möchte. Beim Testen auf meinem Entwicklungscomputer (Win7-32 ​​mit 3 GB RAM) habe ich nie beobachtet, dass der sqlservr.exe - Prozess mehr als 1 GB RAM verwendet, wie ich es von der veröffentlichten Hardware-Skalierung) erwarten würde Limits für die Express Edition von SQL Server.

Ich habe meine Anwendung dann auf einen Computer mit Serverqualität (Win Server 2008R2 64-Bit mit 16 GB RAM) verschoben, um die Leistung dort zu bewerten, und war überrascht, dass der Prozess sqlservr.exe Schnell auf ungefähr 9,5 GB RAM und blieb dort.

Ich habe es ein paar Mal neu gestartet, um zu sehen, ob dies Auswirkungen haben würde, aber jedes Mal kehrte der Prozess schnell auf ~ 9,5 GB zurück. Jetzt bin ich sicherlich erfreut, dass SQL Server Express meinen RAM verwendet, aber ich würde gerne wissen, ob dies ein erwartetes Verhalten ist, damit ich mich nicht auf Leistungsstufen verlasse, die auf der RAM - Nutzung basieren falsch.

Zu Ihrer Information, die Version von SQL Server auf meinem Server laut SELECT @@VERSION Lautet:

Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64) 
    Oct 19 2012 13:38:57 
    Copyright (c) Microsoft Corporation
    Express Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Meine 9,5-GB-Nummer stammt aus der Nummer "Private Working Set" im Task-Manager. Die erste Tabelle der Ausgabe von DBCC memorystatus (Obwohl auf einem jetzt inaktiven Server) ist unten:

PROCESS/SYSTEM COUNTS
Available Physical Memory   5543616512
Available Virtual Memory    8734902411264
Available Paging File       22471094272
Working Set                 9664200704
Percent of Committed Memory in WS   99
Page Faults                 2627510
System physical memory high 1
System physical memory low  0
Process physical memory low 0
Process virtual memory low  0

Ausgabe der von spaghettidba vorgeschlagenen Abfrage zu sys.dm_os_memory_clerks:

MEMORYCLERK_SQLBUFFERPOOL   1410
OBJECTSTORE_LOCK_MANAGER    256
MEMORYCLERK_SQLCLR          38
MEMORYCLERK_SOSNODE         26
CACHESTORE_SQLCP            11

plus ~ 10 weitere kleinere Einträge, die sich auf weniger als 30 MB summieren.

22
Dan

SQL Express ist für den Pufferpool auf 1 GB beschränkt, es gibt jedoch viele andere Speicherpools in SQL Server. Was mich überrascht, ist die übermäßige Verwendung von Nicht-Puffer-Speicherpools. Führen Sie Folgendes aus, um die Speichernutzung pro Speicherangestellter zu ermitteln:

SELECT type, SUM(pages_kb)/1024 AS MemoryMB
FROM sys.dm_os_memory_clerks
GROUP BY type
ORDER BY 2 DESC

Hoffe das hilft

12
spaghettidba