Co jest ważniejsze dla serwera bazy danych? Mem? Prędkość pamięci? Rdzenie?

11

Zamierzam przenieść mój serwer bazy danych na nieco lepszy nowy sprzęt. Bieżący serwer bazy danych nie ma żadnych problemów poza tym, że działa w Centos 4. Obecny sprzęt to 2 czterordzeniowe xeon 5335, 4 15K RPM w RAID 10 i 4 GB (tak, to naprawdę tylko 4 GB) pamięci.

Wybory sprzętowe w moim budżecie nie mają prawie żadnych różnic cenowych i będą miały takie same 4 dyski twarde o prędkości 15 000 obr./min w macierzy RAID 10. Są to:

  • 2 czterordzeniowe xeon 5335 z 8 GB 533/667
  • 2 rdzenie sześciokątne xeon 2620 z 16 GB 1333
  • 4 dwurdzeniowe opteron 8212 z 8 GB 667
  • 1 octo rdzeń xeon 2650 z 8 GB 1333
  • 1 czterordzeniowy xeon 3460 z 16 GB 1333

Z wyjątkiem dysków twardych, jaka jest kolejność ważnych części serwera bazy danych? Czy to coś takiego: rozmiar pamięci, szybkość pamięci, rdzenie, a następnie rozmiar pamięci podręcznej?

Echo mówi Przywróć Monikę
źródło
3
Jakie jest Twoje obecne wykorzystanie procesora? Czy korzystasz z 10%? 50% Jeśli masz ok. 30-40% regularnie, to wygląda na to, że 2620 z 16 GB pamięci RAM jest tym, czego chcesz (układ sześciordzeniowy Q1'12 z 16 GB SZYBKIEJ RAMY? Tak, proszę)
jcolebrand
@jcolebrand To był ten, o którym myślałem, że będzie najlepszy. Średnio 10–20% wykorzystania z czasami skokami do 30–40%.
Echo mówi Przywróć Monikę
XEON 2620 przy 2 GHz, XEON 3460 przy 2,8 GHz?
Nils,

Odpowiedzi:

21

Z mojego doświadczenia wynika, że ​​to, czego szukasz, miałoby następującą kolejność:

  1. Szybkość podsystemu dyskowego. Z mojego doświadczenia wynika, że ​​RAID10 jest najlepszy. Punkty bonusowe za dyski SSD.
  2. Całkowita ilość pamięci RAM Im więcej pamięci RAM, tym więcej pamięci podręcznej może mieć Twój serwer.
  3. Szybkość pamięci Szybsza pamięć RAM jest oczywiście lepsza niż wolniejsza pamięć RAM, jednak pamięć RAM jest zawsze szybsza niż dyski, więc więcej wolniejszej pamięci RAM jest lepsze niż mniej szybka pamięć RAM.
  4. Liczba rdzeni procesora
  5. Prędkość procesora

Zależy to oczywiście od aplikacji, ale zazwyczaj zadaniem serwera bazy danych jest zapewnienie naprawdę szybkiego dostępu do danych, więc szybkość procesora jest mniej ważna niż szybkość dostępu do danych (dysków i pamięci RAM). Ale oczywiście, jeśli używasz dużo matematyki / obliczeń w swoich zapytaniach, potrzebujesz więcej zasobów procesora.

Josh
źródło
2
w zależności od architektury db powiedziałbym, że więcej rdzeni byłoby ogólnie lepszych niż większa prędkość procesora, ponieważ wyższy taktowanie! = krótszy potok, i jest tam zbyt wiele rzeczy do rozważenia, ale przy większej liczbie rdzeni system operacyjny może mieć więcej miejsca na wykonują procesy poboczne, a silniki są zwykle wystarczająco inteligentne, aby móc rozprzestrzeniać się na większej liczbie rdzeni.
jcolebrand,
@jcolebrand point zrobione i odpowiedź zaktualizowana!
Josh
2
Ponieważ wymieniono MySQL, szybsze procesory są zwykle lepszym wyborem niż więcej (zakładając, że nie mówisz tylko o 1 lub 2), ponieważ szybkość pojedynczego zapytania jest zasadniczo ograniczona przez szybkość pojedynczego procesora. Nawet najnowsze wersje MySQL nie skalują się tak dobrze, jak niektóre inne RDBMS na wielu rdzeniach z powodu wewnętrznej rywalizacji muteksów i semaforów. Pracuję na kilku 24-rdzeniowych serwerach i oddałbym swoje lewe ramię, aby wymienić je na pół tyle rdzeni, które są 1,5x szybsze.
Aaron Brown,
7

Jeśli chodzi o MySQL, musisz również wziąć pod uwagę domyślny mechanizm przechowywania danych.

Jeśli używasz tylko danych MyISAM, musisz wziąć pod uwagę następujące kwestie

Szybkość dysku, prędkość pamięci, całkowita pamięć RAM, procesor

Liczba rdzeni jest dużym czynnikiem bezczynnikowym, ponieważ MyISAM (w rzeczywistości mysqld) nie wykorzystuje wielu rdzeni.

Jeśli używasz tylko danych InnoDB, teraz masz o czym porozmawiać, jeśli chodzi o rdzenie.

MySQL 5.5 ma teraz obsługę wielu rdzeni dla InnoDB.

Wszystkie procesory będą odpalać na wszystkich cylindrach dla InnoDB, o ile odpowiednio skonfigurujesz InnoDB. Wierz lub nie, jeśli nie skonfigurujesz InnoDB, są przypadki, w których starsze wersje InnoDB będą szybsze od razu po wyjęciu z pudełka niż nowsze wersje.

Uwaga dla moderatorów

Jeśli jest zbyt wiele linków, nie głosuj za nimi. Po prostu ostrzeż mnie, a mogę sparafrazować fragmenty tych linków.

RolandoMySQLDBA
źródło
Dobrze wiedzieć. Wiele tabel to MyISAM, ale większość, jeśli nie wszystkie, można zmienić na InnoDB, o czym myślałem. Będę aktualizować do 5.1 (z 4.1)
Echo mówi Przywróć Monikę
Musisz zaktualizować do wersji 5.5. MySQL 5.1 wymaga wtyczki. Łatwiej jest przejść do wersji 5.5.
RolandoMySQLDBA
Wtyczkę InnoDB można łatwo zainstalować w 5.1. Ponadto Percona Server 5.1 jest oparty na wtyczce InnoDB.
Aaron Brown,
@AaronBrown: Ponieważ Echo ma MySQL 4.1, zrobiłby to Percona 5.1 lub MySQL 5.5. Mimo że wcześniej instalowałem wtyczki semisync 5.5, jestem trochę leniwy w kwestii wtyczek.
RolandoMySQLDBA
0

Z tego wszystkiego, co już powiedziano i co wydaje mi się z serwerów DB: „2 x hex core xeon 2620 z 16 GB 1333” wydaje mi się pierwszym wyborem.

Użyj RDIMM3 z prędkością 1333 MHz - 12 lub 15 GB jest prawdopodobnie szybsze niż 16 GB, ponieważ możesz podzielić liczbę modułów DIMM przez 3.

Jeśli twoja baza danych jest obciążona zapisami, poszukaj również dobrej wydajności operacji we / wy dysku.

Nils
źródło