Co powinienem wiedzieć przed uruchomieniem bazy danych InnoDB?

10

Co powinien wiedzieć administrator serwera lub DB przed udostępnieniem bazy danych InnoDB.

Myślę o takich rzeczach, jak ustawienie prawidłowych wartości dla innodb_buffer_pool_sizeiinnodb_log_file_size

Więc jakie proste rzeczy można zapomnieć skonfigurować, aby aplikacja korzystająca z bazy danych działała mniej optymalnie?

Jacco
źródło

Odpowiedzi:

14

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_sizei innodb_log_buffer_sizepołą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 .

Nils-Anders Nøttseter
źródło
O innodb_file_per_table należy pamiętać, że metody odzyskiwania miejsca na dysku są różne. Za pomocą plików ibdata możesz odzyskać miejsce w obszarze tabel, usuwając koniec tabel. Ponieważ pojedyncze pliki tabel nie są odzyskiwane przez usunięcie, należy odbudować tabelę z optymalizacją tabeli, aby zwrócić przestrzeń do systemu plików. Optymalizacja blokuje tabelę i może powodować przestoje w aplikacji.
mtinberg,
2

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