Я создаю приложение, в которое планирую встроить SQL Server 2012 Express в качестве основного хранилища данных. При тестировании на моей машине для разработки (Win7-32 с 3 ГБ ОЗУ) я никогда не наблюдал, чтобы sqlservr.exe
процесс использовал более 1 ГБ ОЗУ, как и следовало ожидать от опубликованных ограничений аппаратного масштабирования для редакции SQL Server Express.
Затем я переместил свое приложение на компьютер серверного уровня (64-разрядный Win Server 2008R2 с 16 ГБ ОЗУ), чтобы оценить его производительность, и с удивлением обнаружил, что sqlservr.exe
процесс быстро расширился до примерно 9,5 ГБ ОЗУ и остался там.
Я перезапустил его пару раз, чтобы посмотреть, окажет ли это какое-либо влияние, но каждый раз процесс быстро возвращался к ~ 9,5 ГБ. Теперь я, конечно, рад, что SQL Server Express использует мою оперативную память, но я хотел бы знать, является ли это ожидаемым поведением, чтобы я не стал полагаться на уровни производительности, основанные на неправильном использовании оперативной памяти.
К вашему сведению, версия SQL Server на моем сервере, в соответствии с SELECT @@VERSION
:
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)
Мой номер 9,5 ГБ пришел из номера «Частный рабочий набор» в диспетчере задач. Первая таблица выходных данных DBCC memorystatus
(хотя и на теперь простаивающем сервере) приведена ниже:
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
Вывод из предложенного спагеттидба запроса о sys.dm_os_memory_clerks
:
MEMORYCLERK_SQLBUFFERPOOL 1410
OBJECTSTORE_LOCK_MANAGER 256
MEMORYCLERK_SQLCLR 38
MEMORYCLERK_SOSNODE 26
CACHESTORE_SQLCP 11
плюс ~ 10 более мелких записей размером до 30 МБ.
MEMORYCLERK_SQLBUFFERPOOL 1410 OBJECTSTORE_LOCK_MANAGER 256 MEMORYCLERK_SQLCLR 38 MEMORYCLERK_SOSNODE 26 CACHESTORE_SQLCP 11
а затем еще несколько маленьких, которые составляют <30 МБ. Кажется странным для меня -arg- при форматировании комментария.