SQL Server belleği nasıl boşaltılır?


9

Yerel bilgisayarımda bir SQL Server korumalı alanı yüklemesi var. SQL Server örneğinin kullanabileceği belleği 1000 mb olarak ayarladım. Yoğun bir işlem yürütürken, bellek kullanımı 1000 mb'ye kadar çıkar. İşlem bittiğinde, SQL Server hala belleği tutuyor. Bu hafıza rezervasyonunu nasıl boşaltabilirim?


2
Senin nelerdir min server memoryve max server memory ayarlar ? SQL Server belirttiğiniz minimum değeri ayırdığında, siz ayarı değiştirmedikçe veya örneği zıplatmadıkça asla bırakmayacaktır. James'in belirttiği gibi, belirttiğiniz minimumdan daha fazlasını saklıyorsa, teorik olarak gerekmediğinde serbest bırakması gerekir ve makinede bellek baskısı vardır.
Nick Chammas

@Nick: min sunucu belleği: 0 (MB); maksimum sunucu belleği: 600 (MB).
jrara

Yanıtlar:


13

Hizmeti durdurun / başlatın, başka hiçbir şey belleği işletim sistemine geri bırakmaz.

Açıkçası operasyonel bir sunucu ile yapmak isteyeceğiniz bir şey değil, yerel bir sanal alan için mükemmel bir şey. Dizüstü bilgisayarımdaki 3 farklı örnekle, tek geçerli yol.

@ Nick adlı kullanıcının yorumunu düzenle.

James'in belirttiği gibi, belirttiğiniz minimum değerden daha fazlasını saklıyorsa, teorik olarak gerekmediğinde serbest bırakması gerekir ve makinede bellek baskısı vardır.

"İhtiyacınız yok" tanımınız nedir? Arabellek havuzu doldurulduktan sonra, getirilen diğer sayfalar tarafından beğenilmez hale gelene kadar sayfaları bırakmayacaktır. @Jrara için olduğu gibi, belleği hemen geri istiyorsanız /Başlat.


2
Microsoft'a göre : "Windows Server 2003 altında, SQL Server QueryMemoryResourceNotificationarabellek havuzunun ne zaman bellek ayırabileceğini ve belleği serbest bırakabileceğini belirlemek için bellek bildirim API'sini kullanır ." Bu nedenle, belleğe daha fazla ihtiyaç duyabilecek diğer uygulamaları açlıktan endişe ediyorsanız, SQL Server teorik olarak Windows bunu söylediğinde ihtiyaç duymadığı belleği serbest bırakır. Örneği yeniden başlatarak bir sürümü zorlamak zorunda olmanızın tek nedeni, bu mekanizma tasarlandığı gibi çalışmıyorsa veya min / maks bellek ayarlarınızın yanlış olmasıdır.
Nick Chammas

Bu msdn.microsoft.com/en-us/library/ms178145.aspx üzerinde açıklığa kavuşturmak için başka bir yararlı msdn makalesi . SQL Server minimum sunucu bellek ayarına ulaştığı sürece, işletim sisteminden düşük bellek bildirimlerine yanıt olarak belleği serbest bırakır. Benim tecrübelerime göre, bunun olması oldukça aşırı olmalı.
georgeb

Tam olarak @ georgeb_dba, kolayca vazgeçmeyecek. Ergo, dur / başlat ve hemen dizüstü sınırlı bellek geri almak.
Mark Storey-Smith

4
DBCC FREESYSTEMCACHE ('ALL') 
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE 

havuzu serbest bırakacak.

https://msdn.microsoft.com/en-us/library/ms178529.aspx

Uyarılar

DBCC FREESYSTEMCACHE yürütüldüğünde SQL Server örneği için plan önbelleği temizlenir. Plan önbelleğinin temizlenmesi, sonraki tüm yürütme planlarının yeniden derlenmesine neden olur ve sorgu performansında ani ve geçici bir düşüşe neden olabilir. Plan önbelleğindeki her temizlenen önbellek için SQL Server hata günlüğü aşağıdaki bilgi iletisini içerir: "SQL Server,% s 'önbellek deposu (plan önbelleğinin bir parçası) nedeniyle% d önbellek deposunun temizlenmesiyle karşılaştı. 'DBCC FREEPROCCACHE' veya 'DBCC FREESYSTEMCACHE' işlemleri. " Bu mesaj, önbellek bu zaman aralığında temizlendiği sürece her beş dakikada bir kaydedilir.


1
SQL'in işletim sistemi düzeyinde ayırdığı bellek miktarını gerçekten azaltmayacağından eminim
Greg

3

Diğer uygulamalar işlemeye çalıştığı için otomatik olarak kullanmadığı belleği bırakacaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.