CPU performansı bir veritabanı sunucusu için uygun mu?


33

Bu tamamen teorik bir sorudur. Diyelim ki birden fazla sunucuya dağıtılmış bir uygulamam var.

  1. Bir yük dengeleyici,
  2. Birden fazla / ölçeklenebilir uygulama sunucusu
  3. (Tek) veritabanı sunucusu (şimdilik)

İlk iki bölümde ne arayacağımı biliyorum. Peki ya veritabanı sunucusu? Ne tür bir donanım aramalıyım?

  • CPU frekansı bir veritabanı sunucusu için uygun mu?
  • Çoklu çekirdekli işlemciler alakalı mı?
  • RAM CPU'dan daha mı önemlidir?

Not: Seçilen veri tabanının MySQL veya PostgreSQL olduğunu varsayalım.


Bir tane olmalı.
ConcOedOfTunbridgeWells

Yanıtlar:


29

PostgreSQL için CPU gücü, özellikle verilerinizin aktif çalışma grubunun oldukça yüksek bir yüzdesi RAM'e sığıyorsa çok ilgili olabilir. Çalıştığım veritabanlarının çoğu, çoğu zaman ana darboğaz olarak CPU gücüne sahipti. (Vmstat'ı, günde 5 TB'ın üzerinde veritabanı alanı barındıran milyonlarca hit içeren web sitelerini barındıran bir sunucuda kontrol ettim ve hiçbir zaman% 2'den fazla disk bekleme süresi görmedim, ancak% 12 kullanıcı CPU zamanı zirvesi görmedim.)

PostgreSQL, işlem tabanlı olduğu için, herhangi bir tek işlem yalnızca bir çekirdekli kadar hızlı çalışabilir, ancak yukarıda belirtilen sunucuda olduğu gibi bir karışımda, yüksek hacimli küçük taleplerde, tüm çekirdeklerde toplam CPU en önemlidir. Aynı toplam CPU gücü için, PostgreSQL genellikle çok daha yavaş ve daha az sayıda çekirdekle daha hızlı çalışacaktır.

Etkin veri kümenizin yüksek bir yüzdesinin önbelleğe alındığı noktaya kadar, RAM eklemek, genellikle çekirdek eklemek yerine, paranın karşılığını daha iyi gösterir. Önbelleğe almanız yeterli olduğunda, ek RAM'in yararı azalır ve CPU gücünü artırmanız daha iyi olur.

O PostgreSQL ilgili olduğundan bu konu hakkında daha fazla ayrıntı için, ben daha iyi bir kaynak olduğunu düşünmüyorum PostgreSQL 9.0 High Performance tarafından Greg Smith . (Tam açıklamada, kitap için teknik bir inceleme uzmanıydım, ancak satışlara dayanarak finansal fayda elde etmedim.)


Hey, kitabım var. İlgilendiğiniz belirli bir sayfa, bölüm veya bölüm var mı ??? (PostgreSQL perspektifi için BTW + 1)
RolandoMySQLDBA

PostgreSQL hakkında bilgi için teşekkürler. Kitabı kontrol edeceğim. ;)
Zenklys

1
Sayfa 21-23'den itibaren iyi şeyler
RolandoMySQLDBA

İkinci fıkralarınızın 21-23. Sayfalara göre bilgeliğini görebiliyorum.
RolandoMySQLDBA

23

Kesinlikle bir MySQL perspektifinden bakıldığında, bu çok yüklü bir soru

Bir veritabanı sunucusu için alakalı CPU frekansı?

Daha hızlı CPU ve anakart harika olsa da, diğer tıkanıklıklar da önüne geçebilir. Bu gibi darboğazlar şunları içerir:

  • Disk G / Ç
  • Bağlantı Maksimumları
  • Ağ gecikmesi
  • Bağlantı Başına Sorgu Performansı

Her küçük avantaj yardımcı olur, ancak Hayır demeliyim çünkü CPU hızı, yukarıda belirtilen darboğazları iyileştirmiyor. Sonuçta, Formula 1 RaceCar'ın açık paraşütle veya direksiyonda 800 kiloluk goril ile ne yararı olabilir?

Çoklu çekirdekli işlemciler alakalı mı?

Bu tamamen MySQL'in hangi sürümünde çalıştığınıza bağlı. MySQL 5.1 InnoDB Eklentisi, MySQL 5.5 ve Percona Server'ın XtraDB'si, InnoDB'nin tüm çekirdeklere erişmesini sağlamak için YAPILANDIRMASI GEREKEN YAPILACAK ayarlara sahiptir . Bunu yapmak için gerçek bir teşvik, MySQL LEFT UNCONFIGURED'in bazı eski sürümlerinin geçmiş yayınlarımda tartışıldığı gibi yeni sürümlerden daha hızlı olmasından kaynaklanmaktadır:

Bu nedenle, InnoDB'yi tüm CPU'lara erişmek için yapılandırmak istemiyorsanız, birden fazla çekirdeğe sahip olmak sizi kesinlikle hiçbir şey satın almaz .

RAM CPU'dan daha mı önemlidir?

Evet, gerçekten. MySQL için bellek yapılandırması kurulum gerektirir

Bu şeylerin herhangi bir kombinasyonunun çok az veya çok fazla talep edilmesi ve MySQL sizi ısırmaya geri döndü. RAM için yanlış yapılandırılmış MySQL ile daha hızlı bir CPU sadece MySQL'in sizi daha hızlı ısırmasını sağlar.


2
Mükemmel cevap. Tüm bu bağlantıları kontrol edeceğim, teşekkürler.
Zenklys

6
  • Yok hayır
  • Yok hayır
  • Evet

Basit bir ifadeyle, veritabanları için RAM ve IO performansına (gecikme + okuma hızı + yazma hızı) ihtiyacınız var.

4 veya 6 çekirdekli veya 2,5 GHz ile 3 GHz arasındaki seçim gerçekten önemli değil (32 GB RAM ile P3-450 veya 1 GB RAM ile en son Xeon arasında seçim yapmak zorunda olmadığınızı varsayıyorum).

CPU'ya bağlıysanız, başka sorunlarınız var (zayıf tasarım, zayıf dizinler, takas, özel olmayan sunucu vb.)


Cevap için teşekkürler. SSD'ler o zaman iyi bir seçim mi? CPU gücü üzerinden?
Zenklys

@ Zenklys: söylemesi zor. Ne boyutta bir veritabanınız var? Hacim yaz? Yükü oku? OLTP veya OLAP? etc
gbn

20-30 gb maksimum. 10'a 1 okuma / yazma oranı, sadece küçük veriler, OLTP.
Zenklys

2
@ Zenklys: Bu durumda, gerçekten önemli değil. Sadece RAM'i özellikle MySQL için satın alın, böylece olabildiğince fazla veri
saklanır

3
Bunun neden kabul edilen cevap olduğundan emin değilim. Uygulamayı, iş yükünü veya veri kümesi boyutunu dikkate almadığı için basittir. @kgrittn, gerçek dünya deneyimine dayanan daha iyi bir cevap ve Postgres için operasyon teorisini daha iyi kavradı.
dbenhur
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.