Istnieje kilka opcji konfiguracji, które należy przemyśleć przed rozpoczęciem.
Tak długo, jak w ogóle nie używasz myisam, możesz bezpiecznie przydzielić prawie wszystkie (wystarczająco dużo, aby system operacyjny działał wygodnie i wystarczająco dużo, aby max_connections
) do pamięci innodb_buffer_pool
. Zaletą InnoDB jest to, że samodzielnie obsługuje prawie wszystkie elementy pamięci, bez potrzeby oddzielania takich elementów, jak pamięci podręczne zapytań, bufory kluczy itp.
Zalecam włączenie innodb_file_per_table
, ponieważ po prostu ułatwia przeglądanie systemu plików i sprawdzenie, ile miejsca potrzebują różne tabele i bazy danych. Nadal będziesz potrzebować ogólnego pliku ibdata do użytku wewnętrznego InnoDB, ale możesz go po prostu zdefiniować jako 10M:autoextend
. Nie ma potrzeby definiowania wielu różnych plików danych innodb o wstępnie przydzielonych rozmiarach.
innodb_log_file_size
i innodb_log_buffer_size
połączone muszą być większe niż dziesięciokrotnie twój największy obiekt typu blob, jeśli masz dużo dużych. Jeśli tego nie zrobisz (a nie powinieneś [ 1 , 2 ]), naprawdę nie musisz się tym przejmować. Sprawdź blog wydajności MySQL, aby uzyskać szczegółowy raport na temat obliczania.
A kiedy już uruchomisz MySQL, sprawdź ustawienia za pomocą MySQLTuner lub MySQL Tuning Primer .
Aby uzyskać bardziej szczegółowy raport, wypróbuj mysqlreport , a do monitorowania na żywo sprawdź mytop .
Jednym drobnym „zaskoczeniem” było dla mnie to, że innodb domyślnie używa jednego pliku dla wszystkich baz danych / tabel. W przeciwieństwie do tabel MyISAM, które korzystają z katalogu według bazy danych i plików według tabeli / indeksu tabeli.
Może to mieć znaczenie, jeśli jesteś przyzwyczajony do zmniejszania fizycznych plików na podstawie tabeli (optymalizuj tabelę xxx)
źródło