Я будую додаток, в якому я планую вбудувати SQL Server 2012 Express як основний сховище даних. Під час тестування на моїй розроблювальній машині (Win7-32 з 3 Гб оперативної пам’яті) я ніколи не спостерігав за sqlservr.exe
процесом використання більше 1 ГБ оперативної пам’яті, як би очікував від опублікованих обмежень масштабування обладнання для експрес-версії SQL Server.
Потім я перемістив свою програму на серверну машину (Win Server 2008R2 64-розрядна з 16 ГБ оперативної пам’яті), щоб оцінити її продуктивність там і з подивом виявив, що sqlservr.exe
процес швидко розширився до приблизно 9,5 Гб оперативної пам’яті і там залишився.
Я перезапустив її кілька разів, щоб побачити, чи це матиме якийсь ефект, але щоразу процес швидко повертався до ~ 9,5 ГБ. Тепер я, безумовно, радий, що SQL Server Express використовує мою оперативну пам’ять, але я хотів би знати, чи очікується така поведінка, щоб я не став покладатися на рівні продуктивності, які базуються на неправильному використанні оперативної пам’яті.
FYI, версія 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- при форматуванні коментаря.