Saya membangun aplikasi di mana saya berencana untuk menanamkan SQL Server 2012 Express sebagai datastore utama. Saat menguji pada mesin pengembangan saya (Win7-32 dengan 3GB RAM), saya tidak pernah mengamati sqlservr.exe
proses untuk menggunakan lebih dari 1GB RAM seperti yang saya harapkan dari batas skala perangkat keras yang diterbitkan untuk SQL Express edisi Express.
Saya kemudian pindah aplikasi saya ke mesin kelas server (Win Server 2008R2 64-bit dengan RAM 16GB) untuk mengevaluasi kinerjanya di sana dan terkejut menemukan bahwa sqlservr.exe
proses cepat berkembang menjadi sekitar 9,5GB RAM dan tinggal di sana.
Saya menyalakannya kembali beberapa kali untuk melihat apakah itu akan berpengaruh, tetapi setiap kali, prosesnya dengan cepat kembali ke ~ 9.5GB. Sekarang saya tentu senang SQL Server Express menggunakan RAM saya, tetapi saya ingin tahu apakah ini perilaku yang diharapkan sehingga saya tidak mengandalkan tingkat kinerja yang didasarkan pada penggunaan RAM yang tidak benar.
FYI, versi SQL Server di mesin server saya, menurut SELECT @@VERSION
, adalah:
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)
Nomor 9.5GB saya berasal dari nomor "Private Working Set" di Task Manager. Tabel keluaran pertama dari DBCC memorystatus
(meskipun pada server yang sekarang tidak digunakan) adalah di bawah ini:
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
Output dari permintaan spaghettidba yang disarankan pada sys.dm_os_memory_clerks
:
MEMORYCLERK_SQLBUFFERPOOL 1410
OBJECTSTORE_LOCK_MANAGER 256
MEMORYCLERK_SQLCLR 38
MEMORYCLERK_SOSNODE 26
CACHESTORE_SQLCP 11
plus ~ 10 entri lebih kecil yang jumlahnya kurang dari 30MB.
MEMORYCLERK_SQLBUFFERPOOL 1410 OBJECTSTORE_LOCK_MANAGER 256 MEMORYCLERK_SQLCLR 38 MEMORYCLERK_SOSNODE 26 CACHESTORE_SQLCP 11
Dan kemudian beberapa yang lebih kecil yang berjumlah <30MB. Sepertinya aneh bagiku. -arg- di format komentar.