Disk ve RAM Kapasite Planlama
Bir veritabanı sunucusu için disk ve bellek kapasitesini planlamak siyah bir sanattır. Daha fazlası daha iyi. Daha hızlı iyidir.
Genel kurallar olarak aşağıdakileri öneriyorum:
- HERHANGİ gerekenden daha fazla disk alanı istiyorsunuz .
Gelecek 3-5 yıl için ne kadar disk alanına ihtiyaç duyacağınıza dair en iyi tahmininizi yapın, ardından ikiye katlayın.
- Veri tabanı dizinlerinizi bellekte tutmaya, en büyük sorgunuzu en az iki kez ele almaya ve sağlıklı bir işletim sistemi disk önbelleği için yeterli alana sahip olmaya yetecek kadar RAM isteyeceksiniz.
Dizin boyutu veritabanınıza bağlıdır ve diğer her şey büyük ölçüde veri kümenize ve sorgu / veritabanı yapınıza bağlıdır. Bir öneri olarak "En büyük tablonuzun en az 2 katı büyüklüğünde" önerisini sunacağım, ancak bu öneri, en büyük tablonun onlarca veya yüzlerce gigabayt olabileceği gerçekten büyük veri depolama işlemlerinde bozulduğunu unutmayın.
Her veritabanı satıcısının disk / bellek / işletim sistemi çekirdeğinizi ayarlama performansıyla ilgili bazı talimatları vardır - Dağıtımdan önce bu belgelerle biraz zaman geçirin. Yardımı olacaktır.
İş Yükü Kıyaslama ve Kapasite Planlama
Henüz konuşlandırmadığınızı varsayalım…
Birçok veritabanı sistemi Benchmarking Tools ile birlikte gelir - Örneğin,
PostgreSQL ,
pgBench ile birlikte
gelir .
Bu araçlar, veritabanı performansını kıyaslamada ilk durağınız olmalıdır. Mümkünse, veritabanı sunucusunun "ne kadar çalışma" yapabileceğini hissetmek için tüm yeni veritabanı sunucularında çalıştırmalısınız.
Şimdi kıyaslama ABSOLUTELY MEANINGLESS
için daha gerçekçi bir yaklaşım olarak kabul edebileceğimiz ham bir ölçütle donatıldı: Veritabanı şemasını yükleyin ve onu sahte verilerle dolduran bir program yazın, ardından uygulamanızın sorgularını bu verilere karşı çalıştırın.
Bu, üç önemli şeyi karşılaştırır: 1. Veri tabanı sunucusu (donanım) 2. Veri tabanı sunucusu (yazılım) 3. Veri tabanı tasarımınız ve yukarıdaki (1) ve (2) ile nasıl etkileşime geçtiği.
Bunun, önceden oluşturulmuş basit kıyaslama ölçütlerinden çok daha fazla çaba gerektirdiğini unutmayın pgBench
: Doldurma yapmak için bazı kodlar yazmanız gerekir; sorguları yapmak ve yürütme süresini bildirmek için bazı kodlar yazmanız gerekebilir.
Bu tür testler de büyük ölçüde daha doğrudur: Şema ve sorgularınızla çalıştığınızdan, nasıl performans göstereceklerini görebilirsiniz ve size veritabanınızı / sorgularınızı profilleme ve iyileştirme fırsatı sunar.
Bu kıyaslamaların sonuçları, veritabanınızın ideal bir görünümüdür. Güvende olmak için, üretim ortamınızda bu performansın sadece% 50-70'ini elde edeceğinizi varsaymak (gerisi beklenmedik büyüme, donanım hataları, iş yükü değişiklikleri vb. İle başa çıkmanızı sağlayacak bir yastık).
Çok geç! Üretimde!
Sistemleriniz üretime girdikten sonra "kıyaslama" için gerçekten çok geç - Sorgu günlüğü / zamanlamayı kısaca açabilir ve işlerin ne kadar sürdüğünü görebilirsiniz ve kapalı durumdaki büyük veri setlerine karşı bazı "stres testi" sorgularını çalıştırabilirsiniz. saatler. Sistemin CPU, RAM ve I / O (disk bant genişliği) kullanımına bakıp, ne kadar yüklü olduğu hakkında bir fikir edinebilirsiniz.
Ne yazık ki, tüm bunlar size sistemin ne yaptığı hakkında bir fikir vermek ve doygunluğa ne kadar yakın olduğuna dair belirsiz bir kavram vermek.
Bu bizi…
Devam Eden İzleme
Sisteminiz aniden yeni / farklı kullanım şekilleri görüyorsa, dünyadaki tüm kıyaslamalar size yardımcı olmaz.
Daha iyi veya daha kötü veritabanı dağıtımları statik değildir: Geliştiricileriniz bir şeyleri değiştirecek, veri kümeniz büyüyecek (hiç bir zaman küçülmeyecek gibi görünüyor) ve kullanıcılarınız bir şekilde test etmeyi asla tahmin etmediğiniz olayların çılgın kombinasyonlarını oluşturacaklar.
Veritabanınız için uygun kapasite planlaması yapmak için, veri tabanı performansının artık beklentilerinizi karşılamadığında sizi uyaracak bir tür performans izleme uygulaması yapmanız gerekecektir. Bu noktada düzeltici eylemleri göz önünde bulundurabilirsiniz (yeni donanım, DB şeması veya kaynak kullanımını optimize etmek için sorgu değişiklikleri vb.).
Not: Bu, veritabanı donanımınızı boyutlandırmak ve ne kadar kötüye kullanabileceğini bulmak için çok yüksek ve genel bir rehberdir. Belirli bir sistemin ihtiyaçlarınızı karşılayıp karşılamadığı konusunda hala kararsızsanız, bir veritabanı uzmanıyla konuşmalısınız. Dba.stackexchange.com
: Ayrıca özellikle veritabanı yönetimine adanmış bir Stack Exchange sitesi var . Performans ayarlaması hakkında daha fazla tavsiye için soru arşivlerinde arama yapın veya veritabanı motorunuza özgü etiketlere göz atın.