Home Bez kategorii Hosting z bazą danych – jak wybrać serwer pod dynamiczną stronę
Hosting z bazą danych – jak wybrać serwer pod dynamiczną stronę - ilustracja artykulu

Hosting z bazą danych – jak wybrać serwer pod dynamiczną stronę

by DigitalGates

Hosting z bazą danych – jak wybrać serwer pod dynamiczną stronę

Hosting z bazą danych to usługa, w której obok przestrzeni na pliki otrzymujesz działający serwer bazodanowy — najczęściej MySQL, MariaDB lub PostgreSQL. Każdy hosting z bazą danych obsługujący system CMS musi udźwignąć nie tylko transfer, ale przede wszystkim setki zapytań SQL generowanych przy pojedynczym wyświetleniu podstrony. Różnica jest zasadnicza: statyczny plik HTML serwer wysyła w kilkanaście milisekund, natomiast strona na WordPressie przy każdym żądaniu wykonuje od 40 do 300 zapytań do bazy, a rozbudowany sklep na PrestaShop potrafi przekroczyć 600. Jeśli baza stoi na przeciążonym dysku talerzowym albo ma zbyt mały bufor pamięci, użytkownik zobaczy pustą przeglądarkę przez dwie, trzy sekundy. Wybór pakietu sprowadza się więc do trzech pytań: jaki silnik bazy, ile zasobów procesora i pamięci oraz jakie limity jednoczesnych połączeń oferuje dostawca. Ten tekst rozkłada każde z nich na czynniki pierwsze.

Czym hosting z bazą danych różni się od zwykłego konta FTP

Konto typu «strona wizytówka» sprowadza się do przestrzeni dyskowej oraz serwera Apache lub Nginx. Usługa bazodanowa dokłada osobny proces nasłuchujący na porcie 3306 albo 5432, własny przydział pamięci na cache oraz narzędzia administracyjne w rodzaju phpMyAdmin czy Adminer. To dwa różne obciążenia, które konkurują o ten sam procesor i te same operacje dyskowe.

Konsekwencja praktyczna jest taka, że tani pakiet z nielimitowanym transferem bywa bezużyteczny, gdy dostawca ogranicza liczbę jednoczesnych połączeń do bazy do dwudziestu. Przy piętnastu odwiedzających naraz i kilku zadaniach cron sklep zaczyna zwracać komunikat o błędzie nawiązywania połączenia, mimo że dysk i limit transferu pozostają wykorzystane w kilku procentach.

Drugim elementem jest izolacja zasobów. W ofercie współdzielonej baza sąsiada z nieoptymalnym zapytaniem JOIN na milionie rekordów potrafi zająć cały czas procesora maszyny. Dostawcy rozwiązują to limitami CPU przypisanymi do konta, ale skuteczność bywa różna, dlatego przy poważniejszym projekcie sensowniejszy okazuje się kontener lub maszyna wirtualna z gwarantowanym rdzeniem.

Trzeci obszar to kopie zapasowe. Plik da się odtworzyć z lokalnego archiwum, natomiast baza żyje: zamówienie złożone o 14:20 nie istnieje w zrzucie wykonanym w nocy. Pytanie o częstotliwość backupów bazy, okres ich przechowywania i możliwość odtworzenia pojedynczej tabeli jest więc ważniejsze niż deklarowana pojemność dysku.

MySQL, MariaDB czy PostgreSQL — który silnik wybrać

MySQL i MariaDB to w praktyce ten sam ekosystem. MariaDB powstała jako fork, zachowuje zgodność składni i dokłada silnik Aria oraz agresywniejszy optymalizator zapytań. Dla WordPressa, Joomli czy PrestaShop różnica w czasie odpowiedzi sprowadza się zwykle do kilku procent, więc decyduje raczej to, co udostępnia dostawca w panelu.

PostgreSQL wygrywa tam, gdzie liczą się złożone zapytania analityczne, typ JSONB, indeksy częściowe i rygorystyczna kontrola spójności danych. Aplikacje pisane w Django, Rails czy Node.js sięgają po niego domyślnie. Wadą przy usłudze współdzielonej pozostaje mniejsza dostępność — część polskich firm udostępnia wyłącznie MySQL lub MariaDB, a Postgresa dopiero na VPS-ie.

SQLite pozostaje sensowną opcją dla dokumentacji, prostych narzędzi wewnętrznych i stron generowanych statycznie. Baza mieści się w jednym pliku, nie wymaga osobnego procesu i bez trudu znosi kilkadziesiąt równoległych odczytów. Przy zapisach pochodzących z wielu źródeł blokada całego pliku szybko staje się wąskim gardłem, którego nie da się obejść konfiguracją.

Kodowanie znaków i porządek sortowania

Standardem jest utf8mb4 z porównywaniem utf8mb4_unicode_ci. Starszy zestaw utf8 w MySQL koduje maksymalnie trzy bajty i gubi emoji oraz część znaków CJK. Migracja z latin1 lub utf8 na utf8mb4 przy tabeli liczącej miliony wierszy potrafi trwać godzinami, dlatego parametry ustawia się przed wgraniem pierwszych treści.

Drugim szczegółem jest strefa czasowa serwera bazy. Gdy baza pracuje w UTC, a aplikacja zakłada Europe/Warsaw, harmonogram publikacji i raporty sprzedaży rozjadą się o godzinę lub dwie. Ustawienie weryfikuje się zapytaniem SELECT @@global.time_zone zaraz po uruchomieniu konta, zanim ruszy import danych historycznych.

Parametry, które realnie decydują o wydajności bazy

Pierwszy parametr to pamięć przydzielona na pulę buforów InnoDB. Jeśli aktywny zestaw danych zajmuje 900 MB, a bufor ma 128 MB, serwer nieustannie czyta z dysku zamiast z RAM-u. Reguła praktyczna mówi, że bufor powinien pomieścić 60–80 procent najczęściej używanych tabel razem z ich indeksami.

Drugi to rodzaj nośnika. Dysk NVMe daje kilkaset tysięcy operacji na sekundę wobec około stu na talerzowym HDD. Przy bazie sklepu z 40 tysiącami wariantów produktów przejście z SATA SSD na NVMe potrafi skrócić generowanie listingu kategorii z 1,8 sekundy do mniej więcej 400 milisekund.

Trzeci obszar to limity konta: liczba jednoczesnych połączeń, maksymalny rozmiar bazy oraz czas wykonania pojedynczego zapytania. Dostawcy ucinają zapytania po 30 lub 60 sekundach, co bywa zaskoczeniem podczas importu katalogu XML liczącego kilkadziesiąt tysięcy pozycji albo przy przebudowie indeksu wyszukiwarki produktów.

Hosting z bazą danych – jak wybrać serwer pod dynamiczną stronę - zdjecie w tresci
Zdj. tematyczne: Hosting z bazą danych – jak wybrać serwer pod (fot. MD. Raktim Raze/Pexels)
  • Rozmiar bufora InnoDB — minimum 1 GB dla sklepu średniej wielkości
  • Liczba jednoczesnych połączeń — 50 to rozsądne minimum, 20 bywa za mało
  • Typ dysku — NVMe zamiast SATA SSD przy bazach powyżej 2 GB
  • Wersja silnika — MySQL 8 lub MariaDB 10.6 i nowsze zamiast porzuconej gałęzi 5.7
  • Dostęp zdalny po SSL i możliwość wykonania zrzutu przez SSH, nie tylko przez panel

Cache obiektowy jako tańsza alternatywa dla mocniejszego serwera

Redis lub Memcached przechowują wyniki zapytań w pamięci, ograniczając ruch do bazy nawet o 70 procent. W WordPressie wtyczka cache obiektowego zdejmuje powtarzalne odczyty opcji autoload, które przy rozrośniętej tabeli wp_options potrafią zajmować kilkanaście megabajtów wczytywanych przy każdym pojedynczym żądaniu użytkownika.

Ile kosztuje hosting z bazą danych — od współdzielonego po VPS

Współdzielone konto z jedną lub kilkoma bazami MySQL kosztuje w Polsce zwykle od 8 do 25 zł miesięcznie przy dłuższym okresie rozliczeniowym. To sensowny wybór dla bloga, portfolio i sklepu obsługującego do kilkuset zamówień miesięcznie, pod warunkiem że dostawca nie ogranicza jednoczesnych połączeń zbyt agresywnie.

Wyżej zaczyna się segment maszyn wirtualnych. Konfiguracja z 2 vCPU i 4 GB RAM mieści się w przedziale 40–90 zł miesięcznie. W zestawieniach kosztów regularnie pojawiają się hasła wpisywane w wyszukiwarkę: ovh vps, «google workspace cena» czy «google merchant», bo wydatek na serwer rzadko rozpatruje się w oderwaniu od reszty firmowego stosu narzędzi.

Najwyższy próg to serwer dedykowany albo baza zarządzana. Za maszynę z NVMe i 32 GB RAM płaci się od 300 zł wzwyż, a usługa typu DBaaS z automatycznymi kopiami, monitoringiem i replikacją kosztuje zwykle 25–40 procent więcej niż samodzielny VPS o porównywalnych parametrach sprzętowych.

Typ usługiTypowe zasoby bazyOrientacyjny koszt / mies.
Hosting współdzielony start1–5 baz, 20 połączeń8–15 zł
Hosting współdzielony biznesbez limitu baz, 50 połączeń, NVMe20–45 zł
VPS 2 vCPU / 4 GB RAMwłasna konfiguracja, Redis40–90 zł
Serwer dedykowany32 GB RAM, NVMe w RAIDod 300 zł
Baza zarządzana (DBaaS)replikacja, kopie co godzinęod 120 zł

Baza danych, pozycjonowanie strony i codzienna praca zespołu

Czas odpowiedzi serwera wpływa na ocenę Core Web Vitals, a ta pozostaje jednym z sygnałów rankingowych. Baza generująca TTFB na poziomie 1,2 sekundy podnosi wskaźnik LCP powyżej progu 2,5 sekundy, przez co pozycjonowanie strony w google wymaga później nadrabiania linkami, treścią i dodatkowym budżetem.

Skuteczne pozycjonowanie strony zaczyna się od stabilnego zaplecza technicznego. Robot wyszukiwarki dysponuje ograniczonym budżetem indeksowania: gdy serwer zwraca błędy 500 przy większym obciążeniu bazy, część podstron kategorii nie trafi do indeksu przez kolejne tygodnie, mimo poprawnie wygenerowanej mapy witryny i przemyślanej struktury linkowania.

Codzienna obsługa również odczuwa różnicę. Powolna baza potrafi wydłużyć nawet wordpress logowanie do panelu oraz każdą operację masową na wpisach i zamówieniach. Firmy, których specjalnością jest projektowanie stron internetowych, tracą wtedy godziny na czekanie zamiast na pracę nad szablonem i konwersją.

Wygoda pracy przy migracjach to osobny temat. Drugi monitor do komputera w rozdzielczości QHD mieści konsolę SQL obok logów serwera, a klawiatura mechaniczna skraca pisanie długich zapytań. Niejedna klawiatura gamingowa mechaniczna trafia na biurko administratora, choć kompaktowa klawiatura mechaniczna 60% zostawia więcej miejsca na tablet graficzny Wacom używany przy makietach interfejsu.

Jak sprawdzić, czy hosting z bazą danych wytrzyma ruch w sklepie?

Najprostszą metodą jest test obciążeniowy narzędziem k6, Siege lub ab, wykonany na kopii sklepu z realną liczbą produktów. Symuluj 50 równoczesnych sesji przechodzących przez listing kategorii, kartę produktu i koszyk, bo to najcięższe zapytania w całym systemie. Równolegle obserwuj log wolnych zapytań z progiem ustawionym na 0,5 sekundy — pokaże on, które SELECT-y brakuje indeksu. Jeśli mediana czasu odpowiedzi przekracza 800 milisekund albo pojawiają się błędy nawiązywania połączenia, hosting z bazą danych w tej konfiguracji nie udźwignie kampanii sprzedażowej. Sprawdź też, po jakim czasie dostawca odpowiada na zgłoszenie o przeciążeniu, bo w sezonie liczy się każda godzina.

Czy jedna baza danych wystarczy do kilku stron jednocześnie?

Technicznie tak — wiele instalacji WordPressa może korzystać z jednej bazy, jeśli każda używa innego prefiksu tabel, na przykład wp1_, wp2_ i wp3_. W praktyce takie rozwiązanie sprawdza się wyłącznie przy małych, mało obciążonych witrynach. Wady ujawniają się przy pierwszej awarii: odtworzenie kopii jednej strony wymaga wyłuskania właściwych tabel ze wspólnego zrzutu, a błąd w tym procesie kasuje dane pozostałych serwisów. Dochodzi też kwestia bezpieczeństwa, bo jedno konto użytkownika MySQL ma dostęp do wszystkiego, więc włamanie na jedną witrynę otwiera pozostałe. Osobna baza i osobny użytkownik z ograniczonymi uprawnieniami to koszt kilku minut konfiguracji, który zwraca się przy pierwszym incydencie.

Co zrobić, gdy baza danych spowalnia stronę?

Zacznij od diagnozy, nie od zmiany dostawcy. Włącz slow query log i sprawdź, które zapytania przekraczają sekundę — w typowym sklepie odpowiada za to kilka konkretnych SELECT-ów bez indeksu na kolumnach filtrowania. Następnie oczyść tabele śmieciowe: rewizje wpisów, wygasłe transienty, logi wtyczek i porzucone koszyki potrafią rozdąć bazę z 200 MB do kilku gigabajtów. Trzeci krok to cache obiektowy w Redisie, który zdejmuje powtarzalne odczyty. Dopiero gdy te działania nie wystarczą, przenieś projekt na VPS z NVMe i większą pulą buforów InnoDB. Kolejność ma znaczenie, bo mocniejszy sprzęt maskuje błędy zapytań tylko do czasu kolejnego wzrostu ruchu.

Powiązane artykuły