MySQL

database

Bardzo ważny etapem wdrożenia systemu w firmie, jest odpowiednia konfiguracja serwera bazodanowego. W artykule tym nie będziemy opisywali procedury konfiguracji lecz kilka punktów na jakie warto zwrócić uwagę podczas budowania środowiska serwerowego. Oczywiście nie są to sztywne wytyczne, lecz rady, które są efektem wieloletnich doświadczeń:

  1. Twoimi przyjaciółmi są: vmstat / dstat, iostat, top, ps i każde narzędzie wizualizujące obciążenie.
  2. Określ wąskie gardła (odczyt/zapis, pamięć, procesor, sieć). Jak? Patrz punkt pierwszy.
  3. Optymalizacja serwera zgodnie z procesem: analiza problemu > przemyślenia > zmiana (tylko jedna zmiana w tym samym czasie) > testowanie > implementacja > ponowienie procesu aż do osiągnięcia zadowalających/optymalnych wyników.
  4. Co możesz zmienić (sprzęt)
    • RAID 5 nie jest optymalny dla baz danych, lepiej używać RAID 10
    • W większości przypadków to prędkość procesora jest wąskim gardłem a nie ilość rdzeni. Staraj się inwestować w szybsze procesory.
    • Tam gdzie możesz używaj standardu 1Gbit (w szczególności przy łączeniu serwera aplikacji z serwerem bazodanowym).
    • Używaj dysków z dużym cache (oraz odpowiednio go zabezpieczaj)
    • Nie używaj wirtualizacji dla serwerów bazodanowych!
  5. Co możesz zmienić (system operacyjny)
    • Używaj optymalnych systemów (SLES, RHEL, Debian, CentOS)
    • Używaj architektury 64 bitowej
    • Używaj najnowszych stabilnych wersji (kernel >= 2.6.12)
    • Używaj optymalnego systemu plików np. ext3, xfs
    • Nie modyfikuj systemu operacyjnego, on jest już optymalny!
    • Korzystaj z cachowania zaszytego w systemie operacyjnym
  6. Co możesz zmienić (baza danych)
    • Wielka trójka (key_buffer_size, innodb_buffer_pool_size, innodb_log_file_size)
    • Nie modyfikuj niczego, jeżeli nie wiesz do czego to służy, skorzystaj z gotowych szablonów konfiguracyjnych, które zakładają odpowiednią optymalizacje baz danych. Doradź się specjalisty! 
    • Koniecznie używaj InnoDB! (oraz optymalizacji dla tego silnika).
    • Rejestruj wolne zapytania by móc je optymalizować.
  7. Co możesz zmienić (aplikacja)
    • Indeksuj
      • Wszystkie atrybuty gdzie używasz łączenia
      • Wszystkie atrybuty gdzie używasz wyszukiwania
      • Wszystkie atrybuty gdzie używasz sortowania lub grupowania
      • Wszystkie atrybuty po których skanujesz
    • Jak używać indeksowania
      • Elementy indeksuj tylko od lewej do prawej
      • Dla indeksów złożonych np. INDEX (a, b), INDEX (a,b(10)).
Pamiętaj: Optymalizacja serwera może zwiększyć prędkość działania aplikacji dwukrotnie, optymalizacja aplikacji może przyspieszyć działanie aplikacji dziesięciokrotnie.
  • Monday, 07 August 2017