it-swarm-eu.dev

Proč SQL Server 2012 Express používá 9,5 GB z RAM na mém serveru)?

Vytvářím aplikaci, do které plánuji vložit SQL Server 2012 Express jako primární datové úložiště. Při testování na mém vývojovém stroji (Win7-32 ​​s 3 GB RAM) jsem nikdy nesledoval proces sqlservr.exe, Abych používal více než 1 GB RAM, jak bych očekával od publikovaného hardwarové škálování) limity pro expresní vydání serveru SQL.

Poté jsem svou aplikaci přesunul na serverové zařízení (Win Server 2008R2 64-bit s 16 GB RAM), abych vyhodnotil její výkon tam, a byl překvapen, když jsem zjistil, že proces sqlservr.exe Se rychle rozšířil na přibližně 9,5 GB z RAM a zůstal tam.

Několikrát jsem to restartoval, abych zjistil, zda by to mělo nějaký účinek, ale pokaždé se proces rychle vrátil na ~ 9,5 GB. Nyní jsem určitě potěšen tím, že SQL Server Express využívá své RAM, ale rád bych věděl, zda se jedná o očekávané chování, takže se nespoléhám na úrovně výkonu, které jsou založeny na použití RAM, které je nesprávný.

FYI, verze serveru SQL na mém serveru, podle SELECT @@VERSION, Je:

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)

Moje číslo 9,5 GB pocházelo z čísla „Private Working Set“ ve Správci úloh. První tabulka výstupu z DBCC memorystatus (I když na nyní nečinném serveru) je níže:

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

Výstup z navrhovaného dotazu spaghettidby na sys.dm_os_memory_clerks:

MEMORYCLERK_SQLBUFFERPOOL   1410
OBJECTSTORE_LOCK_MANAGER    256
MEMORYCLERK_SQLCLR          38
MEMORYCLERK_SOSNODE         26
CACHESTORE_SQLCP            11

plus ~ 10 dalších menších položek, které činí méně než 30 MB.

22
Dan

SQL Express je omezen na 1 GB pro fond vyrovnávacích pamětí, ale na serveru SQL Server existuje mnoho dalších paměťových fondů. To, co považuji za překvapivé, je nadměrné používání paměťových fondů bez vyrovnávací paměti. Chcete-li zjistit využití paměti na úředníka paměti, spusťte toto:

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

Snad to pomůže

12
spaghettidba