sql server 2008 r2 için genel bellek gereksinimleri


11

Ben DBA çalışması ile deneyimli değilim, ama sql sunucumuz için ek kaynaklar talep etmek için bir dava yapmaya çalışıyorum ve biz ne çalışması gerektiğini kaba bir tahmin sağlamak için bazı akıllı millet alabilir umuyordum. IT'nin üretim sql sunucumuza sağladığı kaynakların tahsisinin düşük olduğundan şüpheleniyorum.

Donanım yazılım:

Veritabanı: sql server 2008 r2 kurumsal veritabanı

Windows: Windows 2008 r2 Enterprise 64 bit, kesinlikle VMware üzerinde çalışıyor.

İşlemci: Intel (R) Xeon (R) CPU E7-4860 @ 2.27GHz 2.26 GHz (2 işlemci)

Kurulu bellek: 4GB

Veritabanı dosyaları için sabit disk: 300GB

Yedeklemeler için sabit disk: 150GB

Günlükler için sabit disk: 100GB

Uygulama:

Yaklaşık 170 GB'a kadar veri ekleyen 3 ana veritabanımız var, aynı sunucuda günlük olarak oluşturulan 10 farklı rapor (her biri ortalama 700 bin kayıt içeren) barındıran bir Raporlama Hizmetleri veritabanı (SSRS) var. Kullanıcı tabanımız yaklaşık 20 eşzamanlı kullanıcıdır, bunlardan 5'i veri yoğunluğu yüksek büyük raporlar üreterek "kaynak yoğun" olarak değerlendirilebilir. Kullanıcıların çoğu asp.net web sitesi ve Rapor sunucusu web sitesi aracılığıyla veritabanıyla etkileşime girer. Buna ek olarak, geliştiricilerimiz doğrudan sunucuya uzaktan erişim sağlayarak (maksimum 2 uzak bağlantı) BIDS'te SSIS kullanır. Son olarak, sunucuda da çalışan SSIS paketleri yoluyla günde 3 milyon kayıt getiren oldukça ilgili bir veri ambarı operasyonumuz var.

Güncel problemler:

Kronik sunucu sunucu zaman aşımları var ve web sitesine yanıt süresi oldukça kötü. Sahip olduğumuz bellek miktarının (4GB) muhtemelen büyük bir darboğaz olduğundan şüpheleniyorum. Daha fazla sorgu optimizasyonu gerçekleştirmek için ihtiyaç duyduğumuz ortak yanıtla önceki ek bellek taleplerimiz reddedildi. Biz sql artıları veya (kurulum tarafından söyleyebilirim eminim gibi) db admin artıları olmasa da, donanım ise küçük potansiyel performansı sıkmaya çalışırken tüm zamanımı harcamayacağımdan emin olmak istiyorum darboğaz.

Tl; dr kaçınma için teşekkürler!


7
4 GB bellekle 170 GB veriye hizmet vermeyi bekliyorlar mı? Hiçbir sorgu ayarı bunu düzeltmeyecek ve ağaçlarından çıkacaklar.
Aaron Bertrand

Onlara sayıları göster (performans istatistikleri). Ayrıca onlara Windows Server 2008 R2 için minimum belleği gösteren Microsoft belgelerinin 4 GB olduğunu gösterebilirsiniz; bu SQL Server için fazla bir şey bırakmaz.

2
Bekleme istatistikleriniz ne gösteriyor? Sorgularınız için çok fazla PAGEIOLATCH_XX beklediğinizi sanıyorum. Eğer öyleyse, bunu fazladan hafızanın faydalı olacağını kanıt olarak kullanabilirsiniz.
SQLRockstar

2
Ve hafızanız varsa daha iyi bir IO alt sistemi üzerinde çalışmaya başlayabilirsiniz. İyi kullanılan bir veritabanı için Hard DRIVE bir IOPS şakasıdır. Bu SÜRÜCÜLER olmalıdır. Sürücüyü kapasite olarak satın almazsınız, IOPS kaynağı olarak sürücüyü satın aldığınız veritabanları için. Bu 512GB SSD'nin veritabanı dosyaları için iyi olacağı anlamına gelir. Standart "büyük ve ucuz olsun" veritabanı öldürür.
TomTom

@TomTom Eminim (umarım) bir baskın dizimiz var. Yine de nasıl tespit edeceğimi bilmiyorum. Ben sadece bilgisayar pencere gezgini windows sunucusunda gösterdiği ne sabit sürücü açıklaması dayandı.
RMuesi

Yanıtlar:


14

... ne yapmamız gerektiğini kabaca tahmin etmeyi umuyordum.

Sorgularınız ve veri boyutlarınız hakkında daha fazla bilgi olmadan, doğru bir tahmin vermeksizin size her türlü tahmini vermek gerçekten zordur.

Veritabanı: sql server 2008 r2 kurumsal veritabanı

Windows: Windows 2008 r2 Enterprise 64 bit, kesinlikle VMware üzerinde çalışıyor.

İşlemci: Intel (R) Xeon (R) CPU E7-4860 @ 2.27GHz 2.26 GHz (2 işlemci)

Kurulu bellek: 4GB

İki işlemci (bunun VM'de 2 çekirdeğe maruz kaldığını varsayıyorum) yetersiz olabilir veya olmayabilir. Bir VM'ye atanan çekirdeklerin doğrudan fiziksel çekirdeklerle eşleştirilmesi gerekmez (veya gerektiğinde tek bir çekirdeğin% 100'ünün kullanılmasına bile izin verilmez!), Bu yüzden bunun bellekten daha esnek bir kaynak olduğunu görebilirsiniz. İş yükünüz veya donanım / sanallaştırma yapılandırmanız hakkında daha fazla bilgi olmadan, bunu 4'e yükseltmenin güzel olacağını söyleyebilirim.

Bellek ayırma. Ah oğlum. Bu, iş yükü için büyük ölçüde yetersizdir. Windows'un kendisinin mutlu olması için en az 2-3 GB olması gerekir ve kutuda BIDS çalıştıran 2 kullanıcının her biri için en az 500 MB gerekir. Ve bununla birlikte, kutu zaten maksimize edildi ve veritabanının ne kadar ihtiyacı olacağını anlamaya bile başlamadım .

Kullanıcıların çoğu asp.net web sitesi ve Rapor sunucusu web sitesi aracılığıyla veritabanıyla etkileşime girer.

Söylemediniz, ancak bunlar aynı kutuda çalışıyorsa, onlar için bellek gereksinimlerinin de dikkate alınması gerekir.

Son olarak, sunucuda da çalışan SSIS paketleri yoluyla günde 3 milyon kayıt getiren oldukça ilgili bir veri ambarı operasyonumuz var.

Bunun, sistemde canlı kullanıcı olmadığında gece çalıştığını varsayarsak, çalıştırılması çok uzun sürmediği sürece bunu bir sorun olarak görmüyorum. Şeylerin bu kısmı endişelerinizin en azıdır; canlı kullanıcılar daha önemlidir.

Daha fazla sorgu optimizasyonu gerçekleştirmek için ihtiyaç duyduğumuz ortak yanıtla önceki ek bellek taleplerimiz reddedildi.

Yukarıda gösterdiğim gibi, sağlanan mevcut bellek miktarı tamamen yetersizdir. Aynı zamanda, spektrumun diğer ucunda, tüm veritabanını bir kerede bellekte tutabilmek için yeterli miktarda bellek elde edebilmeniz pek olası değildir .

Böyle bir battaniye yanıtı alsanız bile (bu arada, muhtemelen gerçek kaynak kullanımının kendisi değil, ek kaynaklar için gerekçenizin ne kadar ikna edici olduğu ile daha fazla ilgisi vardı ), büyük olasılıkla veritabanının verimliliği olabilir gelişmiş. Ancak, şu anda yaşadığınız sorunları çözebilecek tek bir ayar yoktur; bunun önerisi benim için tam bir başlangıç ​​değil.

Şu anda sağlanan bellek miktarının gereken minimum değerin (ASAP düzeltilmesi gerekir) altında olduğu genel yaklaşımı benimserim ve verimliliğini artırmak için iyileştirmeler yapılırken kullanıcı deneyimini kullanılabilir bir düzeye getirmek için ek kaynaklar gerekebilir . sistemleri.

İşte birkaç düşünce (saldırı sırasına göre):

  • Daha fazla kaynak sağladığınızda performansın ne kadar arttığını kanıtlayabiliyorsanız kazanırsınız . Mümkünse web sitesi yanıt süreleri de dahil olmak üzere Performans İzleyicisi günlüğünü (not: günlüğü bölümü çok önemlidir) kullanarak performans metriklerini takip edin . Bunu yaparken başlayın artık başka bir şey yapmadan önce,. Sonunda minimum bellek miktarına ulaştığınızda (hemen 32 GB almayacaksınız), aniden eklenen belleğin bir şeyleri geliştirdiğine dair kanıtlarınız var ... bu da daha fazlasını eklemenin muhtemelen yardımcı olacağı anlamına geliyor ! Geçerli yapılandırmada bir taban çizgisi toplamazsanız, işler önerilen minimum düzeye yükseltildiğinde tekneyi kaçıracaksınız.

  • Sunucunuzun bekleme istatistiklerini analiz edin . Bu size sistemdeki en büyük darboğazın ne olduğunu söyleyecektir. Muhtemelen PAGEIOLATCH_XXen yaygın / en yüksek bekleme süresine sahip olacaksınız , bu da sayfaları diskten almak için çok fazla G / Ç yapıldığını gösterir. Bu, bellek ekleyerek hafifletilebilir, böylece gerekli veriler zaten bellekte olduğundan fiziksel G / Ç'ler daha az sıklıkta olur. Bu analiz neredeyse vazgeçilmez bir sonuç olsa da, bu istatistikleri toplamış olmanız, kaynak ihtiyacını haklı çıkarırken size daha fazla cephane sağlar.

  • Yukarıda bahsettiğim gibi, bellek için minimum minimum gereksinim karşılanmıyor. Çalıştırdığınız tüm yazılımlar için önerilen donanım gereksinimlerini toplayın ve belki de Görev Yöneticisi'nin ekran görüntülerini alın. Bu tek başına yerinde en az 4-8 GB daha fazla haklı çıkarmak için yeterli olmalıdır. Yine de reddediyorlarsa, onları bir hafta boyunca denemenize izin vermeye ikna etmeye çalışın ve bundan sonra geri verin (performans istatistiklerini topluyorsunuz, bu yüzden geri vermenize gerek yok çünkü hafta ortası ' durumu ne kadar iyileştirdiğini kanıtlayabilecektir). Eğer hala reddediyorlarsa, başarısız olmak için kuruluyorsunuz; URLT .

  • İş yükünün bir kısmını boşaltabiliyorsanız (özellikle, mümkünse uzak durmaktan kaçının), bu, veritabanı için kullanılabilir bellek miktarını artıracaktır, bu da daha kritiktir.

  • Veritabanının tamamını bir kerede belleğe sığdıramazsınız, bu da bellekte fazla çalışmayı önlemek için SQL Server'ın maksimum bellek ayarını çok dikkatli bir şekilde ayarlamanız gerekir , bu da performansı başka hiçbir şey gibi öldürmez . Aşırı taahhüt aslında tüm verileri hafızaya sığdırmamaktan bile daha kötüdür . Şu anda bu senaryoda olmanız büyük olasılıkla sadece kullanılabilir bellek olmadığı için ve maksimum bellek ayarının varsayılan (sınırsız) olarak ayarlanmış olması muhtemeldir.

  • SQL Server Enterprise Edition çalıştırdığınız ve bellek çok önemli olduğu için, veri sıkıştırmayı uygulamayı kesinlikle öneririm . Bu, bellekte yer tasarrufu sağlamak için CPU kullanımındaki bir artışı değiştirecektir (ve dolayısıyla nispeten yavaş olan disk erişimlerinin azalması).

  • Veritabanını ayarlayın. Yapıların ve sorguların, dizin oluşturma ve erişim kalıplarına göre iyileştirmeler kullanması muhtemeldir. Ayrıca, çok fazla veri sık sık taranıp toplanıyorsa, dizinlenmiş görünümler, özet tablolar veya önceden hesaplanmış raporlar oluşturmak çok yararlı olabilir.

  • Bu daha uzun bir donanım olabilir, çünkü muhtemelen daha fazla donanım sağlama anlamına gelir, ancak bir önbellekleme çözümü uygulayın. En hızlı sorgu hiç yapmadığınız sorudur .

Bunlar sadece birkaç fikir. Sonuç olarak, tek başına ayarlama, buradaki sorunları çözmeyecek veya tek başına donanım yapmayacak, ancak ikincisi muhtemelen mevcut sorunların çoğunu hafifletecektir. Gerçekten böyle gider: yangını söndürmek için kısa vadede donanıma donanım atmak ve kök nedenini en iyi şekilde düzeltmek için uzun vadede problemi ayarlamayı atın.


1
John Cevabınızı ve + 1'inizi seviyorum ama bu senaryoda, Aaron'un yorumu kafaya çarptı ve ne kadar zorlamaya çalıştıklarına bakılmaksızın daha fazla koza ihtiyaç duyuyorlar.
Ali Razeghi

2
@ Ali: Evet, katılıyorum ve cevabımda bundan bahsettim. Çoğunlukla daha fazla RAM almak için stratejilere odaklanmak istedim , çünkü buradaki sorun gibi görünüyor. (Sadece mevcut değilse bu ayrı bir konudur.)
Jon Seigel

Ayrıntılı cevap için çok teşekkürler! Ben db performans ayarlama yeniyim, bu yüzden sadece nereden başlayacağımı anlamaya çalışıyorum. Bazı okuma materyalleri ve Performans İzleyicisi var, şimdi metrikleri anlamalıyım. Ancak önerileriniz bu soruna yaklaşmak için iyi bir yol haritası sunar. Tekrar teşekkürler.
RMuesi

@RMuesi: Çok hoş geldiniz. Yapmanız gerekeni nasıl yapacağınızla ilgili özel sorularınız varsa, bunları göndermekten çekinmeyin (lütfen önce arayın, elbette) ve topluluk size yardımcı olmaktan mutluluk duyacaktır.
Jon Seigel

9

Bu hesap 'fasulye sayacı' delilik. RAM'de harcayacağınız $ 1100- $ 2500, bir hafta içinde kendisi için ödeme yapabilir !

20 çalışan için zaman aşımı yaşıyorlar ve 5'i 'kaynak yoğun' iş yapıyor. Zamanlarının ucuz olmadığını hayal ediyorum ve bu raporlardan bazıları patronun maaş çekini imzalamamasının seveceği raporlar. Bu, yeniden iletmek ve hayal kırıklığı ile uğraşmak için harcanan tonlarca boşa.

Onlara büyük olasılıkla RAM için 15 - 20 $ GB'a baktıklarını açıklayın. 128GB RAM şu anda kabaca 2200 $ - 2500 $ olacak ve RAM fiyatları şu anda biraz yükseldi. Sunucu anakartınız bunu destekleyemese bile (bu garip olurdu), 64GB 1100-1200 $ olacaktır (az önce kontrol ettim ve indirim uygulanmaksızın Dell'den sunucu ram kalitesi). Sadece 64GB RAM bile büyük bir fark yaratabilir (büyük tabloların tablo taramalarından kaçındığımızdan emin olun).

Ne kadar zaman harcadığını bulun ve onlara 1100- 2500 dolar değerinde olup olmadığını sorun. Yalnızca 1100 dolar harcar ve 64 GB RAM alırsanız, büyük tablolarda tablo taramalarından kaçının. Büyük taramaların bellek boşaltılmasını önlemek için dizinlerle daha fazla disk kullanın (destekleyecek gecikme süreniz varsa).


5
Delilik için iyi dedi. 4GB bellek, bu günlerde bir masaüstü için önerebileceğimden daha az. Ve bu şimdi 170GB veritabanı ortamında çalışmaya çalışıyor. Kahretsin şaka. Ama hey, beancounters için sanallaştırma, büyük pahalı sunuculardan kurtulabileceğiniz anlamına gelir;)
TomTom

2
Kesinlikle katılmak. En azından OP'ler senaryosundaki fasulye sayaçlarının pençeleri fiziksel sunucudan çıkarıldı (umarım!)
Ali Razeghi

1
buna inan. Yapmıyorum. TYPICAL, bol miktarda RAM ve - LAAAAARGE ucuz disklere sahip bir sunucu olacaktır. Böylece üzerlerinde çok sayıda sanal makine çalıştırabilirsiniz. Sonuçta, RAM normalde sınırlayıcı faktördür, değil mi?)? Sonuç, bir veritabanı olmasa bile, IOPS'un olağanüstü performansı olacaktır. Orada bulundum, gördüm. 64 gb bellek, 2 tb ayna SATA disk;)
TomTom

Cevap için teşekkürler. Şüpheliyim ama sorunun kısmen donanım taklidi olduğunu kanıtlayacak verilere sahip değilim. Şimdi bunun üzerinde çalışıyorum.
RMuesi

2
SQL Server'ın bir bellek veritabanı motorunda olduğunu bildirmek isteyebilirsiniz. Diskten okumak, SSD'ler bile (ki bu mağazanın kullanmadığından eminim) acı verici yavaş. RAM'den bir okuma yaklaşık 5ns sürer. Tablo taramalarını ve okumaları gösteren SET STATISTICSIO ON ile bir yürütme planı gösterin. Fiziksel okumaları ve mantıksal okumaları gösterin. Fiziksel diskten yapılır.
Ali Razeghi

-1

2008 R2'yi 46GB Ram ile çalıştırıyorum. Sanal makine yok. SQL Server 2008.

Veritabanları yaklaşık 300 GB'dir.

Son zamanlarda veritabanlarını yarıiletken sürücüye koydum ve veri çıkışımı üçe katladım.

Sunucu şu anda 45GB Ram kullanıyor ve iyi çalışıyor.

FC Sata Raids ve SAS SCSI Raids Karşılaştırması. Toplam 26 mantıksal sürücü. 144 Dönen diskler.

Dün yalnızca 50 TB RAM kullandım ve sadece 50 TB'lık tam sabit disk bağlandığımda ve veri aktarırken kullanıyordum. Bugün 160 TB'lık tam sabit diskim var ve 45 GB RAM kullanıyorum.

Uygulamam 400 MB'den fazla koç kullanmıyor.

Hızlı katı hal sürücüsü veya ram sürücüsünde veritabanlarına ihtiyacınız olduğundan şüphelenirim. Temelde çok daha fazla koza ihtiyacınız olsa.


IBM exFlash 400GB MCS 4400 $. Ben de oraya gidiyorum.
david
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.