SQL Server neden daha fazla sunucu belleği kullanıyor?


36

SQL Server, sunucu RAM'imin% 87.5'ini tüketiyor. Bu son zamanlarda yavaşlık gibi birçok performans darboğazına neden oldu. Bu konuyu araştırdım. İnternette bulabildiğim yaygın bir çözüm, SQL Server için maksimum sınırı belirlemektir. Bu yapıldı ve çok fazla gelişme sağlandı. Neden maksimum bellek değeri ayarlanmadıysa, neden SQL Server'ın kaynakları tüketmeye devam ettiğini bilmek istiyorum


3
SQL Server'ın RAM kullanımının herhangi bir darboğazın kaynağı olduğunu nasıl belirlediniz? Neyin yavaşlığı? Bir şey olursa, mümkün olduğu kadar RAM kullanıyorsa (veya beklediğinizden veya istediğinizden daha fazla) , SQL Server daha verimli olmalıdır . SQL Server'da bellek kullandığından (bunun için tasarlandığı gibi) kullandığı sunucuda sorun yaşayan başka uygulamalarınız varsa, bunları başka bir sunucuya taşıyın .
Aaron Bertrand

Buradaki yöntemi kullandım lucidica.com/help/got-sql-eating-up-ram Bu yardımcı oldu mu bana bildirin :) Saygılarımla, Nikita.
Nikita Kosousov

Yanıtlar:


48

SQL Server, izin verdiğiniz kadar bellek tüketir . Varsayılan olarak, bu numara makinenizdeki sayısal belleğinizin% 100'ünü kapsayacaktır. Bu yüzden ne gördüğünü görüyorsun. SQL Server 24 GB bellek verirseniz, SQL Server 24 GB bellek kullanmak için elinden geleni yapacaktır. Ardından, SQL Server ve işletim sistemleri kaynakları için mücadele edersiniz ve bu her zaman düşük performansla sonuçlanır.

max server memoryYapılandırma sınırını ayarladığınızda, arabellek havuzu için SQL Server'ın ne kadar tahsis edebileceğini sınırlıyorsunuz (neredeyse veri sayfalarını ve yordam önbelleğini sakladığı yerde). SQL Server'da başka bellek görevlileri de vardır, bu nedenle kendi sürümünüz için (2008 R2 ve altı), max server memorysadece tampon havuzunu kontrol eder. Ancak bu her zaman en büyük bellek tüketicisi olacak.

Min ve max sunucu belleğinin etkileri üzerine TechNet Referansı

Min sunucu belleği ve maksimum sunucu belleği yapılandırma seçenekleri, Microsoft SQL Server Veritabanı Altyapısı'nın arabellek havuzu tarafından kullanılan bellek miktarının üst ve alt sınırlarını belirler.

İşletim sistemi için ne kadar hafızadan ayrılmam gerektiği sorusuna gelince , bu genel olarak tartışılan bir ölçüdür. Gerçekten hepsi, çoğunlukla sunucuda çalışan diğer işlemlere bağlıdır . Gerçekten özel bir sunucu olması koşuluyla (ve bu neredeyse hiçbir zaman böyle olmaz). İşletim sistemi için en az 4 GB bellek görmeyi seviyorum (ve hatta büyük donanım kutularında). Fakat en önemlisi, ne kadar kullanılmamış hafıza olduğunu izleyin. Liberal olun ve çok fazla kullanılabilir durumun (perfmon üzerinden izlenebilir) ve kullanılmayan hafızanın (elbette bu köşe durumları için daima küçük bir tampon bırakarak) farkına varırsanız, SQL Server'a daha fazla hafıza verin.


11

SQL Server, sunucudaki tüm belleği varsayılan olarak kullanmak için tasarlanmıştır. Bunun nedeni, SQL Server'ın veritabanındaki verileri RAM'de önbelleğe almasıdır; böylece, bir kullanıcının ihtiyaç duyduğu her defasında verileri diskten okuması gerektiğinde verilere daha hızlı erişebilir. SQL Server'ın her seferinde aynı verilere ihtiyaç duyduğu her defasında diske gitmemiz gerekirse, IO gereksinimleri delicesine yüksek olurdu.

Normalde, insanların Windows için yaklaşık 4 GIG RAM bırakmalarını öneririm, ancak bu gerçekten sunucuda çalışan yazılımın miktarına, hangi SQL Server bileşenlerini kullandığınızı (tüm bileşenler bu ayarı izlemiyor) vb.


6

Bu, SQL yeniden başlatmaya gerek kalmadan anında çalışır:

Sunucu Belleği Sunucu Yapılandırma Seçenekleri

SQL Server Bellek Yöneticisi tarafından yönetilen bellek miktarını (megabayt olarak) yeniden yapılandırmak için iki sunucu belleği seçeneğini, minimum sunucu belleğini ve maksimum sunucu belleğini kullanın. Varsayılan olarak, SQL Server kullanılabilir sistem kaynaklarına göre bellek gereksinimlerini dinamik olarak değiştirebilir.

Sabit miktarda bellek yapılandırma prosedürü Sabit miktarda bellek ayarlamak için:

  1. Nesne Gezgini'nde, bir sunucuya sağ tıklayın ve Özellikler'i seçin.
  2. Bellek düğümünü tıklayın.
  3. Sunucu Belleği Seçenekleri altında, Minimum sunucu belleği ve Maksimum sunucu belleği için istediğiniz miktarı girin.

SQL Server'ın bellek gereksinimlerini mevcut sistem kaynaklarına göre dinamik olarak değiştirmesine izin vermek için varsayılan ayarları kullanın. Min sunucu belleği için varsayılan ayar 0'dır ve maksimum sunucu belleği için varsayılan ayar 2147483647 megabayttır (MB).

Umarım bu yardımcı olur!



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.