Özel bir veritabanı sunucusunda, işletim sistemi için ne kadar bellek ayıracak?


38

Açıkça veritabanı fonksiyonları için tahsis edilmiş bir sunucunuz olduğunu varsayalım - işletim sistemi için ne kadar hafıza ayırmanız gerekir?

Bunun, belirli işletim sistemine, belirli veritabanı yazılımına ve benzerlerine bağlı olarak muhtemelen biraz değişeceğini biliyorum. Ancak, bellek veritabanı performansı için çok önemli olduğu için , ana bilgisayar işletim sistemine açılmadan veritabanının maksimum makul bellek düzeyine sahip olmasını istiyorum .

Yani

  • başlamak için iyi bir kural nedir?
  • Çok ileri gidip gitmediğimizi ve ana bilgisayar işletim sisteminin bir şekilde veritabanı tarafından aç bırakıldığını belirlemek için hangi sayaçlara veya performans göstergelerine bakmalıyız?

Siz hiç bu ayarları değiştirdiniz mi? Profilin sana ne anlattı?
jcolebrand

@jcole şu anda eklemek için hiçbir şey; Genelde istediğimden biraz daha muhafazakar olan işletim sistemi için 4 - 6 gb ayırıyoruz
Jeff Atwood

Yanıtlar:


30

Windows ve SQL Server varsayarak ...

İki düşünce okulu var.

  1. Windows için 2-4 Gigs bırakın (SQL Server dışında neyin kurulu olduğuna bağlı olarak).
  2. Kullanılabilir hafızanızın% 10'unu boş bırakın. 64 Gig’i geçtikten sonra, bu işletim sistemi için büyük olasılıkla ihtiyaç duymayacak kadar büyük miktarda bellek olacak.

Şahsen ben ilk gruptayım. Windows genellikle sadece 6'ya kadar olan 2-4 konsere ihtiyaç duyar.


2
OS için 2 ish gb RAM ile aynı fikirde.
jcolebrand

Ben de katılıyorum. Genellikle işletim sistemi için 2 GB bırakıyorum ve bitişik sayfa dosyası alanı da sağlıyorum. Tabii ki, kilometreniz değişebilir ve en iyi tercihiniz ayarı yapılandırmak, performansı izlemek ve gerektiği gibi dikkatli değişiklikler yapmaktır.
Matt M

2
@ matt doğru ama özellikle "OS işletim sistemi yetersiz mi?"
Jeff Atwood

1
@Jeff Benim yorumum olması gerektiği kadar kesin değildi. Bellek için, genellikle aşağıdaki performans sayaçlarına bakarım: Bellek: Sayfa / sn ve Bellek: Kullanılabilir Bayt. Daha fazla bilgi için bu sayfalara bakın: sql-server-performance.com/articles/audit/... ve technet.microsoft.com/en-us/library/cc966540.aspx (özellikle Hafıza Darboğazları bölümü)
Matt M

6
@Jeff Denny'nin cevabı doğru ve Perfmon sayaçları için Bellek: Kullanılabilir Baytları izleyin. Aşağıya düşerse, 512MB, işletim sistemini aç bırakma tehlikesi altındasınız. Bununla birlikte, 64-bit sistemlerdeki dosya önbelleğinin farkında olmamakla birlikte hala mevcuttur: blogs.msdn.com/b/ntdebugging/archive/2007/11/27/…
Brent

16

Linux varsayalım, eğer takas özelliğini kapatırsanız ve çekirdek, DB işleminizi öldürmeye devam ederse, hafızası yetersiz olduğu için, bu işletim sistemi hafızasına aç kaldığınızı gösteren iyi bir göstergedir. Bu bitinceye kadar geri çekil. Birkaç yüz kilo genellikle bol miktarda bulunur.


); Profil profil profil için 1 ~ ancak kesin 's SQLServer ve Windows'u tahmin askin' s Jeff olmak
jcolebrand

1
Bununla birlikte @jcolebrand, @jeff'in, bilmediğini söyleyeceğini de bilerek, kasıtlı olarak tüm platformlar ve veritabanları için açık bıraktığını gösterir.
xenoterracide 13:11

2
Ve hala @jeff olduğunu bilerek ... neden endişelenmeyi bırakıp Linux'u sevmeyi öğrenemedi? ;-)
Jürgen A. Erhard

8

Amazon'un binlerce müşterinin veritabanı sunucusunu çalıştıran deneyiminden yararlanabilirsiniz: Amazon İlişkisel Veri Tabanı Hizmetinde, ne kadar bellek olursa olsun, MySQL'in innodb tampon havuzunu sistemin belleğinin 3 / 4'üne ayarladılar. Birkaç sorgu arabelleği için bağlantı başına birkaç taneye kadar ekleme ekleyin ve muhtemelen belleğin% 10-20'sini işletim sistemine bırakıyorlar.


5

Brent Ozar'ın hatıralarını aldığını okumalısın . Neden belleğe bakmanız gerektiğine ve neden daha fazla belleğin daha iyi performansa eşit olduğuna dair oldukça standart cevapları var. Genel olarak konuşmak gerekirse 4 GB veya% 10 işletim sistemi için ayrılmıştı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.