SQL Server Max Belleği RAM kullanımını sınırlamıyor


18

Bu konudaki bilgilerinizi istiyorum. Bir sql server 2008r2 Ent var. Ed. 16 çekirdek ve 64 GB RAM ile 64 bit. 20111014'ten itibaren tam olarak yamalanmış bir SQL sunucusu örneği vardır.

Maksimum ram 60000MB olarak ayarlanmıştır. Birkaç gün sonra çevrimiçi olarak görev yöneticisine göre ücretsiz koç miktarı 0'dır.

Maksimum ram'i 53GB'ın altına değiştirirsem, birkaç gün sonra stabilize olur ve serbest koç alır.

Görev yöneticisine göre koç tahsis eden sql işlemidir. Sorunun gerçekte ne olduğunu nasıl anlayabilirim? Zaten test bir sürü yaptım ama bu benim beğenisine henüz çözmedim söylemeye gerek yok. ve ohh mevcut ram 0'a düştüğünde tipik bellek açlığını geciktirmiyoruz.

Güncelleme 1:

Bu sayfadaki RAM ile ilgili başka bir Q / A'dan esinlenen /dba//a/7062/2744 . RAM'in ne için kullanıldığını görmek için bu ikisini kullandım.

SELECT TOP ( 10 )
        [type] AS [Memory Clerk Type] ,
        SUM(single_pages_kb) AS [SPA Mem, Kb]
FROM    sys.dm_os_memory_clerks
GROUP BY [type]
ORDER BY SUM(single_pages_kb) DESC
OPTION  ( RECOMPILE ) ;

SELECT  DB_NAME(database_id) AS [Database Name] ,
        COUNT(*) * 8 / 1024.0 AS [Cached Size (MB)]
FROM    sys.dm_os_buffer_descriptors
--WHERE   database_id > 4 -- system databases
--        AND database_id <> 32767 -- ResourceDB
GROUP BY DB_NAME(database_id)
ORDER BY [Cached Size (MB)] DESC
OPTION  ( RECOMPILE ) ;

Bunlar tarafından gösterilen miktar ilk önce 7948432 Kb ikincisi 44030,57812 MB, sql sunucusu tarafından kullanılan yaklaşık 52GB'dir ... öyleyse RAM'imin geri kalanı nereye gitti? :-) Görev yöneticisi şovu şu anda önbelleğe alınmış 363, mevcut 401, ücretsiz 40 ve sqlservr.exe özel bellek 64 459 656'ya sahiptir. Max Ram daha önce olduğu gibi 60000MB olarak ayarlanmıştır.

Yanıtlar:


20

SQL Server maksimum bellek ayarı, yalnızca arabellek havuzu kullanımı için sınırları tanımlar. Bu sınırın üzerinde değişken ancak önemli tahsisler gerekecektir.

Jonathan Kehayias , Christian Bolton ve John Samson konuyla ilgili 300/400 seviye yayınladı. Brent Ozar'ın daha kolay okunabilecek bir makalesi var.

Ayrıca: SQL Server 2008 R2 “Hayalet Bellek”


evet, sadece tampon havuzunu sınırladığını kabul ediyorum. Onlara bakacağım yer imleri için teşekkür ederim.
Martin Sjöberg

Ben bu bağlantıları okuyorum ve orada bazı iyi şeyler def var. Sorumu öğrendiklerimle güncelleyeceğim. Ayrıca Max Pizzeria için hazır numarası var ben relifed hissediyorum ... Ev yapımı olup olmadığını merak ediyorum?
Martin Sjöberg

16

Bahsedildiği gibi Tampon havuzu ve yordam önbelleği, maksimum sunucu belleği tarafından denetlenen tek şeyle ilgilidir. SQL Server'da bu sınırın ötesinde bellek yiyebilecek başka birçok şey var. Bunlar şunları içerir (ancak bunlarla sınırlı değildir):

  • Veritabanı Postası
  • SQLCLR
  • Genişletilmiş Saklı Yordamlar
  • Onların yaşadığı ikili dosyalar
  • SQL Mail
  • SSIS
  • SSAS
  • SSRS

Yukarıda belirtilenlerden bu sunucuda ofc ve ssis ikili dosyalarını kullanıyoruz.
Martin Sjöberg

1
Sunucuda başka hangi yazılımlar yüklü? Ve bir şey demek istiyorum. MPIO sürücüleri, Flash sürücü sürücüleri, yedekleme yazılımı, anti-virüs, sys-internals, vb.
mrdenny

Sunucu oldukça temiz ve yeni yüklenen ama ofc biz orada bazı var. Bu haftanın sonunda bir liste hazırlamaya çalışacağım. Kısa ve hafızamdan ... bir iodrive (dell), McAfee, masaüstünde işlemci gezgini, iometre, ağaç boyutu ...
Martin Sjöberg

1
FusionIO sürücüsünün çalışmak için çok fazla belleğe ihtiyacı var. Muhtemelen çok şey alıyor.
mrdenny

Bunu kanıtlamak mümkün mü? Veya daha az RAM kullanacak şekilde yapılandırmak için mi? Sofar, ne zaman ve ne dezavantajları fark etmediğinde RAM'i serbest bırakıyor gibi görünüyor, ancak sadece RAM kullanımı ile ne olabileceğinden endişe duyduğum ssis paketlerinin miktarını arttırmamız gerekiyor.
Martin Sjöberg


2

http://msdn.microsoft.com/en-us/library/ms178067.aspx

Maksimum sunucu belleğini azaltmak için, belleği serbest bırakmak üzere SQL Server'ı yeniden başlatmanız gerekebilir.

Anladığım kadarıyla, arabellek havuzundaki bir sayfa diske yazılmamışsa, o zamana kadar serbest bırakılmayacaktır.

Maksimum bellek ayarının düşürülmesi SQL Server'ın kirli sayfaları temizlemesine neden oluyor mu?

Bunu doğrulamak için perfmon tampon tamponunu izleyebilir. Perfmon -> SQLServer: Buffer Yöneticisi: Veritabanı Sayfaları


SQL Server'ı yeniden başlatmanız gerekebilir. Her zaman gerekli değildir. Belleği serbest bırakmak için yeniden başlatmanın gerekli olduğu veya gerekmediği koşulları biliyor musunuz?
Nick Chammas

Bu ayrıntıları mevcut cevabınızda düzenler ve silerim. Belki de mrdenny kirli sayfaları yıkama hakkındaki sorunuza cevap verebilir.
Nick Chammas

1
Doğru, SQL kirli olduğunda (üzerine yazılmıştır) bellek sayfasını serbest bırakamaz. Sistem her kontrol noktasında kirli sayfalar diske yazılır. Maksimum sunucu belleğinin değiştirilmesinin bir kontrol noktasının oluşmasına neden olduğuna inanmıyorum.
mrdenny

1
Bellek ayarlarını değiştirmek için örneğin yeniden başlatılması büyük bir hata olabilir. Bellek ayarlarını değiştirmek CHECKPOINTveritabanlarında bir işleme neden olmazken , yordam önbelleğini temizler. Yalnızca bellek ayarlarını değiştirmek için örneği yeniden başlatırsanız, yalnızca yordam önbelleği soğuk değil, aynı zamanda veri önbelleği de soğuk olur. Maksimum bellek, bellekteki kirli sayfalar nedeniyle azaltılamıyorsa CHECKPOINT, kirli sayfaları diske temizlemek için veritabanlarındaki komutu çalıştırın , sonra örneği yeniden başlatmadan bellek ayarını en yoğun olmayan zamanda değiştirin .
Jon Seigel
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.