Planowanie pojemności dysku i pamięci RAM
Planowanie pojemności dysku i pamięci dla serwera bazy danych jest czarną sztuką. Wiecej znaczy lepiej. Im szybciej, tym lepiej.
Jako ogólne wytyczne oferuję:
- Chcesz więcej miejsca na dysku niż kiedykolwiek będziesz potrzebować.
Dokonaj najlepszego oszacowania, ile miejsca na dysku będziesz potrzebować przez następne 3-5 lat, a następnie dwukrotnie.
- Będziesz potrzebować wystarczającej ilości pamięci RAM, aby utrzymać indeksy bazy danych w pamięci, obsłużyć największe zapytanie co najmniej dwa razy, a nadal mieć wystarczająco dużo miejsca na zdrową pamięć podręczną dysku systemu operacyjnego.
Rozmiar indeksu zależy od bazy danych, a wszystko inne zależy w dużym stopniu od zestawu danych i struktury zapytań / bazy danych. Jako propozycję podam „Co najmniej 2x rozmiar największego stołu”, ale zauważ, że ta sugestia dotyczy naprawdę dużych operacji hurtowni danych, w których największy stół może mieć kilkadziesiąt lub setki gigabajtów.
Każdy dostawca bazy danych ma instrukcje dotyczące dostrajania wydajności jądra dysku / pamięci / systemu operacyjnego - Przed wdrożeniem poświęć trochę czasu na skorzystanie z tej dokumentacji. To pomoże.
Benchmarking obciążenia i planowanie wydajności
Zakładając, że jeszcze nie wdrożyłeś ...
Wiele systemów baz danych jest dostarczanych z narzędziami Benchmarking - na przykład
PostgreSQL jest dostarczany z
pgBench .
Narzędzia te powinny być Twoim pierwszym przystankiem w testowaniu wydajności baz danych. Jeśli to możliwe, powinieneś je uruchomić na wszystkich nowych serwerach baz danych, aby poczuć „ile pracy” może wykonać serwer bazy danych.
Uzbrojony teraz w surowy test porównawczy, który ABSOLUTELY MEANINGLESS
rozważymy bardziej realistyczne podejście do testu porównawczego: Załaduj schemat bazy danych i napisz program, który zapełni go danymi zastępczymi, a następnie uruchom zapytania aplikacji względem tych danych.
Ten test porównuje trzy ważne rzeczy: 1. Serwer bazy danych (sprzęt) 2. Serwer bazy danych (oprogramowanie) 3. Projekt bazy danych i jej interakcja z (1) i (2) powyżej.
Zauważ, że wymaga to dużo więcej wysiłku niż proste, wstępnie skompilowane testy porównawcze, takie jak pgBench
: Musisz napisać kod, aby wypełnić dane, i może być konieczne napisanie kodu, aby wykonać zapytania i czas wykonania raportu.
Ten rodzaj testowania jest również znacznie bardziej dokładny: ponieważ pracujesz nad schematem i zapytaniami, możesz zobaczyć, jak będą one działać, i oferuje możliwość profilowania i ulepszania bazy danych / zapytań.
Wyniki tych testów porównawczych są wyidealizowanym widokiem Twojej bazy danych. Dla bezpieczeństwa załóż, że osiągniesz tylko 50-70% tej wydajności w środowisku produkcyjnym (reszta to poduszka, która pozwoli ci poradzić sobie z nieoczekiwanym wzrostem, awariami sprzętu, zmianami obciążenia itp.).
Jest za późno! Jest w produkcji!
Gdy Twoje systemy są już w produkcji, jest naprawdę za późno na „testowanie” - możesz na krótko włączyć rejestrowanie / synchronizację zapytań i zobaczyć, jak długo trwa wykonanie, i możesz uruchomić zapytania „testu warunków skrajnych” dla dużych zestawów danych podczas wyłączenia godziny. Możesz także spojrzeć na wykorzystanie procesora, pamięci RAM i we / wy (przepustowość dysku), aby dowiedzieć się, jak bardzo jest obciążony.
Niestety, wszystkie te rzeczy pozwolą ci zorientować się, co robi system i niejasne pojęcie, jak blisko jest nasycenia.
To prowadzi nas do…
Monitorowanie na żywo
Wszystkie testy porównawcze na świecie nie pomogą ci, jeśli twój system nagle zobaczy nowe / różne wzorce użytkowania.
W przypadku lepszych lub gorszych wdrożeń baz danych nie ma charakteru statycznego: Twoi programiści będą zmieniać rzeczy, twój zestaw danych będzie się powiększał (nigdy nie wydaje się, że się kurczy), a twoi użytkownicy w jakiś sposób utworzą szalone kombinacje zdarzeń, których nigdy nie przewidywałeś podczas testowania.
Aby właściwie zaplanować pojemność bazy danych, będziesz musiał wdrożyć monitorowanie wydajności, aby ostrzec Cię, gdy wydajność bazy danych nie spełnia już Twoich oczekiwań. W tym momencie możesz rozważyć działania naprawcze (nowy sprzęt, zmiany schematu DB lub zmiany zapytań w celu zoptymalizowania wykorzystania zasobów itp.).
Uwaga: Jest to bardzo ogólny i ogólny przewodnik na temat doboru sprzętu bazy danych i ustalania, ile może to znosić. Jeśli nadal nie masz pewności, jak ustalić, czy określony system spełnia Twoje potrzeby, powinieneś porozmawiać z ekspertem ds. Baz danych.
Istnieje również witryna Stack Exchange poświęcona w szczególności zarządzaniu bazami danych: dba.stackexchange.com . Przeszukaj ich archiwum pytań lub przejrzyj tagi właściwe dla silnika bazy danych, aby uzyskać dodatkowe porady na temat dostrajania wydajności.