MySQL
Konfiguracja i tuning
Szukaj…
Uwagi
Konfiguracja odbywa się na jeden z 3 sposobów:
- opcje wiersza poleceń
- plik konfiguracyjny
my.cnf
- ustawianie zmiennych z poziomu serwera
Opcje wiersza poleceń mają postać mysqld --long-parameter-name=value --another-parameter
. Te same parametry można umieścić w pliku konfiguracyjnym my.conf
. Niektóre parametry można konfigurować przy użyciu zmiennych systemowych z poziomu MySQL. Sprawdź oficjalną dokumentację, aby uzyskać pełną listę parametrów.
Zmienne mogą mieć myślnik -
lub podkreślenie _
. Wokół =
mogą istnieć spacje. Duże liczby mogą być dodawane przez K
, M
, G
dla kilo-, mega- i giga-. Jedno ustawienie na linię.
Flagi: zwykle ON
i 1
są synonimami, to samo dla OFF
i 0
. Niektóre flagi nie mają po nich nic.
Umieszczając ustawienia w my.cnf
, wszystkie ustawienia serwera muszą znajdować się w sekcji [mysqld]
, więc nie dodawaj ślepo ustawień na końcu pliku. (Uwaga: w przypadku narzędzi, które pozwalają wielu instancjom mysql współdzielić jeden plik my.cnf, nazwy sekcji mogą być inne.)
Wydajność InnoDB
Istnieją setki ustawień, które można umieścić w my.cnf. Dla „lite” użytkownika MySQL nie będą one miały tak dużego znaczenia.
Gdy baza danych stanie się nietrywialna, zaleca się ustawienie następujących parametrów:
innodb_buffer_pool_size
Powinno to być ustawione na około 70% dostępnej pamięci RAM (jeśli masz co najmniej 4 GB pamięci RAM; mniejszy procent, jeśli masz małą maszynę wirtualną lub starą maszynę). To ustawienie kontroluje wielkość pamięci podręcznej używanej przez SILNIK InnoDB. Dlatego jest to bardzo ważne dla wydajności InnoDB.
Parametr pozwalający na wstawienie ogromnych danych
Jeśli musisz przechowywać zdjęcia lub filmy w kolumnie, musimy zmienić wartość zgodnie z potrzebami aplikacji
max_allowed_packet = 10 mln
M oznacza Mb, G w Gb, K w Kb
Zwiększ limit ciągów dla group_concat
group_concat
służy do łączenia wartości niepustych w group
. Maksymalną długość wynikowego ciągu można ustawić za pomocą opcji group_concat_max_len
:
SET [GLOBAL | SESSION] group_concat_max_len = val;
Ustawienie zmiennej GLOBAL
zapewni trwałą zmianę, natomiast ustawienie zmiennej SESSION
spowoduje ustawienie wartości dla bieżącej sesji.
Minimalna konfiguracja InnoDB
Jest to absolutna minimalna konfiguracja serwerów MySQL korzystających z tabel InnoDB. Za pomocą InnoDB pamięć podręczna zapytań nie jest wymagana. Odzyskaj miejsce na dysku, gdy tabela lub baza danych jest DROP
ed. Jeśli używasz dysków SSD, opróżnianie jest operacją nadmiarową (dyski SDD nie są sekwencyjne).
default_storage_engine = InnoDB
query_cache_type = 0
innodb_file_per_table = 1
innodb_flush_neighbors = 0
Konkurencja
Upewnij się, że możemy utworzyć więcej niż 4 domyślne wątki, ustawiając innodb_thread_concurrency
na nieskończoność (0); pozwala to InnoDB decydować w oparciu o optymalne wykonanie.
innodb_thread_concurrency = 0
innodb_read_io_threads = 64
innodb_write_io_threads = 64
Wykorzystanie dysku twardego
Ustaw pojemność (normalne obciążenie) i pojemność_maks. (Absolutne maksimum) IOPS dla MySQL. Domyślna wartość 200 jest odpowiednia dla dysków HDD, ale obecnie, w przypadku dysków SSD obsługujących tysiące IOPS, prawdopodobnie będziesz chciał dostosować tę liczbę. Istnieje wiele testów, które można uruchomić, aby określić IOPS. Powyższe wartości powinny być prawie takie, jeśli korzystasz z dedykowanego serwera MySQL . Jeśli korzystasz z innych usług na tym samym komputerze, powinieneś przydzielić je odpowiednio.
innodb_io_capacity = 2500
innodb_io_capacity_max = 3000
Wykorzystanie pamięci RAM
Ustaw dostępną pamięć RAM dla MySQL. Chociaż ogólna zasada wynosi 70–80%, tak naprawdę zależy to od tego, czy Twoja instancja jest poświęcona MySQL, oraz od ilości dostępnej pamięci RAM. Nie marnuj pamięci RAM (tj. Zasobów), jeśli masz dużo dostępnych.
innodb_buffer_pool_size = 10G
Bezpieczne szyfrowanie MySQL
Domyślne szyfrowanie aes-128-ecb
wykorzystuje tryb elektronicznej książki kodowej (ECB), który jest niepewny i nigdy nie powinien być używany. Zamiast tego dodaj do pliku konfiguracyjnego:
block_encryption_mode = aes-256-cbc