To pytanie można prawdopodobnie zadać również na StackOverflow, ale najpierw spróbuję tutaj ...
Wydajność instrukcji INSERT i UPDATE w naszej bazie danych wydaje się obniżać i powodować niską wydajność w naszej aplikacji internetowej.
Tabele to InnoDB, a aplikacja wykorzystuje transakcje. Czy są jakieś łatwe poprawki, które mogę przyspieszyć?
Myślę, że możemy mieć problemy z blokowaniem, jak mogę się dowiedzieć?
mysql
performance
innodb
mmattax
źródło
źródło
Odpowiedzi:
Sprawdź, czy Twój sprzęt i system operacyjny są poprawnie skonfigurowane i dostrojone:
Sprawdź, czy instancja MySQL / InnoDB jest odpowiednio dostrojona:
Load data infile
polecenie jest znacznie szybsze dla serii wstawek.select count(*) from table;
jest znacznie wolniejszy dla innodb niż dla myisam.Kilka przydatnych linków:
źródło
Dzięki domyślnej konfiguracji innoDB będziesz ograniczony do tego, jak szybko możesz zapisywać i opróżniać transakcje na dysk. Jeśli możesz sobie poradzić z utratą małego ACID, eksperymentuj z innodb_flush_log_at_trx_commit. Ustaw na 0, aby zapisywać i opróżniać dziennik na dysk co sekundę. Ustaw na 1 (domyślnie), aby pisać i opróżniać przy każdym zatwierdzeniu. Ustaw na 2, aby zapisywać do pliku dziennika po każdym zatwierdzeniu, ale opróżniaj tylko raz na sekundę.
Jeśli poradzisz sobie z utratą 1 transakcji, może to być świetny sposób na znaczną poprawę wydajności zapisu.
Zwróć także uwagę na to, co robią twoje dyski. RAID 10> RAID 5 dla zapisów kosztem dodatkowego dysku.
źródło
Problemy z blokowaniem zostaną przeanalizowane przez stany połączenia w
show full processlist;
Przeczytaj przez
my.cnf
dokumentację i MySQL. Opcje konfiguracji są bardzo dobrze udokumentowane.Ogólnie rzecz biorąc, chcesz przetworzyć jak najwięcej w pamięci. W przypadku optymalizacji zapytań oznacza to unikanie tabel tymczasowych. Prawidłowe stosowanie indeksów.
Strojenie będzie dostosowane do preferowanego silnika bazy danych i architektury aplikacji. Istnieją znaczne zasoby wcześniej istniejące wyszukiwanie w Internecie.
źródło
Włączenie monitorów Innodb może pomóc w identyfikacji przyczyn blokad i zakleszczeń:
POKAŻ STATUS INNODB SILNIKA i Monitory InnoDB
źródło
InnoDB to całkiem niezły silnik. Jednak w dużej mierze zależy od „dostrojenia”. Jedną rzeczą jest to, że jeśli twoje wstawki nie są w porządku rosnącej liczby kluczy podstawowych, innoDB może potrwać nieco dłużej niż MyISAM. Można to łatwo pokonać, ustawiając większy rozmiar innodb_buffer_pool_size. Sugeruję ustawienie 60–70% całkowitej pamięci RAM. Obecnie używam 4 takich serwerów w produkcji, wstawiam około 3,5 miliona wierszy na minutę. Mają już blisko 3 terabajty. InnoDB musiało tak być ze względu na wysoce współbieżne wstawki. Istnieją dalsze sposoby na przyspieszenie wkładek. A niektóre z nich przeprowadziłem testy porównawcze.
źródło
Jak rozwiązywać problemy z wstawieniem i aktualizacją wydajności w MySQL w aplikacji sieci Web, po prostu wyłączając automatyczne zatwierdzanie i zatwierdzanie zmian raz w java. Zgodnie z sugestią w dokumentacji mysql.
Dokumenty MySQL
źródło