Saya memiliki instalasi sandbox SQL Server di komputer lokal saya. Saya telah mengatur memori contoh SQL Server dapat digunakan untuk 1000 mb. Saat menjalankan operasi intensif, penggunaan memori naik hingga 1000 mb. Ketika operasi selesai, SQL Server masih memegang memori. Bagaimana cara membebaskan reservasi memori ini?
sql-server
memory
jrara
sumber
sumber
min server memory
dan Anda ? Setelah SQL Server cadangan minimum yang Anda tentukan, itu tidak akan pernah melepaskannya kecuali jika Anda mengubah pengaturan atau bangkit instance. Seperti dicatat James, jika cadangan lebih dari minimum yang Anda tentukan, harus secara teori melepaskannya ketika tidak membutuhkannya dan ada tekanan memori pada mesin.max server memory
Jawaban:
Hentikan / mulai layanan, tidak ada lagi yang akan melepaskan memori kembali ke OS.
Jelas bukan sesuatu yang Anda ingin lakukan dengan server operasional tetapi sangat masuk akal untuk kotak pasir lokal. Dengan 3 contoh berbeda di laptop saya, ini satu-satunya cara.
Edit komentar @ Nick berikut ini.
Apa definisi Anda tentang "tidak membutuhkannya"? Setelah kumpulan buffer telah diisi, itu tidak akan menjatuhkan halaman sampai mereka menjadi tidak disukai oleh halaman lain yang dibawa masuk. Jika Anda ingin memori kembali segera, seperti halnya untuk @jrara, Anda harus berhenti /Mulailah.
sumber
QueryMemoryResourceNotification
untuk menentukan kapan buffer pool dapat mengalokasikan memori dan melepaskan memori." Jadi, jika Anda hanya khawatir kelaparan aplikasi lain yang mungkin membutuhkan lebih banyak memori, secara teori SQL Server akan melepaskan memori yang tidak diperlukan ketika Windows mengatakannya. Satu-satunya alasan Anda harus memaksa rilis dengan memulai kembali instance adalah jika mekanisme ini tidak berfungsi seperti yang dirancang atau pengaturan memori min / max Anda salah.akan membebaskan kolam.
https://msdn.microsoft.com/en-us/library/ms178529.aspx
Catatan
Menjalankan DBCC FREESYSTEMCACHE membersihkan cache paket untuk instance SQL Server. Mengosongkan cache rencana menyebabkan kompilasi ulang semua rencana eksekusi berikutnya dan dapat menyebabkan penurunan sementara, kinerja permintaan. Untuk setiap cachstore yang dihapus dalam cache paket, log galat SQL Server akan berisi pesan informasi berikut: "SQL Server telah mengalami% d kemunculan cachestore flush untuk cachestore '% s' (bagian dari cache paket) karena Operasi 'DBCC FREEPROCCACHE' atau 'DBCC FREESYSTEMCACHE'. " Pesan ini dicatat setiap lima menit selama cache dihapus dalam interval waktu tersebut.
sumber
Ini akan melepaskan memori yang tidak digunakan secara otomatis ketika aplikasi lain mencoba untuk melakukannya.
sumber