Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Generator my.cnf

Rekomendowana konfiguracja MySQL / MariaDB

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
Podaj RAM i liczbę połączeń, aby otrzymać rekomendacje.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Generator my.cnf — tuning MySQL i MariaDB

Najważniejszym parametrem wydajności MySQL jest rozmiar bufora InnoDB. Domyślne wartości są bardzo małe (np. 128 MB), przez co baza odwołuje się do dysku znacznie częściej, niż musi.

Kluczowe parametry

ParametrRola
innodb_buffer_pool_sizecache danych i indeksów (najważniejszy)
innodb_log_file_sizerozmiar logów transakcyjnych
max_connectionslimitu połączeń
tmp_table_size / max_heap_table_sizetabele tymczasowe w pamięci

Zasady doboru

  • innodb_buffer_pool_size — 60–70% RAM na dedykowanym serwerze bazy.
  • innodb_flush_log_at_trx_commit — wartość 2 to kompromis między bezpieczeństwem a wydajnością.
  • max_connections — nie ustawiaj zbyt wysoko; każde połączenie zajmuje pamięć.
  • Po zmianach zrestartuj usługę i obserwuj wolne zapytania.

Jak generator liczy wartości do my.cnf

Generator nie zgaduje — przelicza. Podajesz rozmiar pamięci RAM serwera i podstawowe informacje o obciążeniu, a narzędzie stosuje reguły znane z ręcznego strojenia MySQL i MariaDB: bufor InnoDB dostaje 60–70% pamięci, a reszta zostaje dla systemu operacyjnego, procesów pomocniczych i samej bazy.

Fundamentem jest prosty wzór: innodb_buffer_pool_size mieści się w przedziale od RAM × 0,6 do RAM × 0,7. Dla serwera z 16 GB pamięci (16384 MB) daje to od 9830,4 MB do 11468,8 MB. Każda wartość z tego przedziału jest lepsza niż domyślne 128 MB, które na takiej maszynie zajmuje zaledwie 0,78% RAM — dlatego baza tak często sięga po dysk.

Pozostałe parametry wynikają z tej samej zasady bilansowania pamięci. Połączenia, bufory sesji i tabele tymczasowe muszą się zmieścić w części, która nie trafiła do bufora — dlatego im wyżej ustawisz bufor, tym ostrożniej trzeba podchodzić do liczby połączeń. Generator zwraca komplet ustawień w jednym spójnym zestawie, który można wkleić do sekcji [mysqld].

Przykład: serwer 16 GB RAM krok po kroku

  1. Ustal dostępną pamięć: 16 GB to 16384 MB.
  2. Policz widełki dla bufora: 16384 × 0,6 = 9830,4 MB oraz 16384 × 0,7 = 11468,8 MB.
  3. Wybierz wartość mieszczącą się w przedziale — np. 10240 MB, czyli 10240 / 16384 = 62,5% RAM.
  4. Porównaj z domyślnym ustawieniem: 10240 / 128 = 80, czyli bufor będzie 80 razy większy niż standardowe 128 MB.
  5. Sprawdź, ile pamięci zostaje systemowi: 16384 − 10240 = 6144 MB na system operacyjny, procesy towarzyszące i bufory połączeń.
  6. Zapisz parametry w sekcji [mysqld], zrestartuj usługę i obserwuj wskaźnik Buffer pool hit rate — celem jest wartość powyżej 99%.

Ile pamięci przeznaczyć na bufor przy różnych rozmiarach RAM

Pamięć RAM serweraZakres innodb_buffer_pool_size (60–70%)Udział domyślnych 128 MB w RAM
4 GB (4096 MB)2457,6–2867,2 MB3,13%
8 GB (8192 MB)4915,2–5734,4 MB1,56%
16 GB (16384 MB)9830,4–11468,8 MB0,78%
32 GB (32768 MB)19660,8–22937,6 MB0,39%
64 GB (65536 MB)39321,6–45875,2 MB0,20%
128 GB (131072 MB)78643,2–91750,4 MB0,10%

Jak używać generatora w praktyce

  • Podaj realną pamięć maszyny, nie całego hosta. Jeśli baza działa w kontenerze lub maszynie wirtualnej z limitem, wpisz ten limit — inaczej wyliczony bufor nie zmieści się w dostępnej pamięci.
  • Zacznij od dolnej granicy przedziału. Przy 60% zostaje więcej miejsca na bufory połączeń i tabele tymczasowe; jeśli po testach hit rate jest zbyt niski, podnieś wartość w stronę 70%.
  • Ustawiaj bufor razem z max_connections. Każde połączenie rezerwuje pamięć na własne bufory, więc wysokie max_connections i bufor na górnej granicy przedziału to proszenie się o swap.
  • Traktuj wynik jako punkt startowy. Wklej wygenerowany fragment do [mysqld], uruchom serwer i dopiero po obserwacji wolnych zapytań koryguj wartości.
  • Zapisuj, co zmieniłeś. Trzymaj kopię poprzedniego pliku konfiguracyjnego, żeby móc wrócić do działających ustawień, gdy nowe okażą się zbyt agresywne.

Czego generator nie uwzględni

  • Rzeczywistego profilu obciążenia. Narzędzie opiera się na rozmiarze RAM, a nie na liczbie zapytań, proporcji odczytów do zapisów ani typie danych — baza z przewagą zapisów potrzebuje innych proporcji niż serwis czytający.
  • Pamięci zajętej przez inne procesy. Jeśli na tej samej maszynie działa serwer aplikacji, cache albo silnik wyszukiwania, wolnej pamięci jest mniej, niż wynika z samej wartości RAM.
  • Wersji i silnika Storage Engine. Zakresy parametrów mają sens dla InnoDB; tabele MyISAM, Aria czy inne silniki rządzą się własnymi zasadami i nie korzystają z bufora InnoDB.
  • Limitów systemu i kontenera. Ograniczenia cgroup, ulimit czy parametrów jądra potrafią sprawić, że formalnie poprawna konfiguracja zostanie zdławiona lub zakończona przez OOM killer.

Najczęstsze pytania

Czy bufor może być zbyt duży?

Tak — jeśli zostawisz za mało pamięci dla systemu i innych usług, serwer zacznie używać swap, co drastycznie obniży wydajność.

Jak sprawdzić, czy bufor wystarcza?

Monitoruj wskaźnik „Buffer pool hit rate” — docelowo powyżej 99%. Niskie wartości oznaczają, że baza czyta z dysku zbyt często.

Gdzie umieścić my.cnf?

Typowo /etc/mysql/my.cnf lub /etc/my.cnf (zależnie od dystrybucji), w sekcji [mysqld].

Ile MB bufora ustawić przy 32 GB RAM?

Zakres 60–70% z 32768 MB to od 19660,8 MB do 22937,6 MB. Wartość startowa w okolicach 20 GB jest bezpieczna, o ile reszta pamięci wystarcza na system i bufory połączeń.

Czy można ustawić innodb_buffer_pool_size na 80% RAM?

Można, ale wiąże się to z ryzykiem: gdy dla systemu i innych usług zostanie za mało pamięci, serwer zacznie korzystać ze swap, co drastycznie obniży wydajność. Zalecany przedział to 60–70%.

Czy generator działa tak samo dla MariaDB?

Tak, bo kluczowe parametry InnoDB mają w MariaDB te same nazwy i znaczenie. Różnice dotyczą zwykle parametrów pobocznych, których generator nie wylicza.

Ile ustawić max_connections?

Tyle, ile realnie potrzebujesz w szczycie — każde połączenie zajmuje pamięć na własne bufory. Zbyt wysoki limit przy dużym buforze InnoDB skończy się brakiem wolnej pamięci.

Dlaczego domyślne 128 MB to za mało?

Na serwerze z 16 GB RAM to 0,78% pamięci, a na maszynie ze 128 GB zaledwie 0,10%. Baza musi wtedy czytać strony z dysku zamiast z pamięci, co widać po niskim wskaźniku Buffer pool hit rate.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!