Ustaw limit czasu oczekiwania blokady w MySQL

13

Gdzie mam ustawić maksymalny czas, przez który kwerenda będzie czekać na blokadę w MySQL 5.0.68 przed przekroczeniem limitu czasu?

Gajusz
źródło

Odpowiedzi:

8

Domyślnie jest to 50 sekund

Wystarczy ustawić innodb_lock_wait_timeout w razie potrzeby.

RolandoMySQLDBA
źródło
1

Jeśli przekroczysz 50-sekundowy limit czasu InnoDB, masz źle zaprojektowaną aplikację!

Ten limit czasu istnieje, aby złapać niegrzeczne rzeczy, których nie można złapać w żaden inny sposób.

Rick James
źródło
1
Lub z powodu błędów mam bardzo zajęty serwer mysql i mariadb, a zakleszczenia są normalną rzeczą, która zdarza się cały czas. Nawet jeśli „niemożliwe”. Jeśli masz sto milionów wierszy i dziesięć tysięcy poleceń SQL w każdej sekundzie, znajdziesz w mysql każdy błąd (awarie), a także różnego rodzaju zakleszczenia.
John,
1
To zależy od sytuacji. Z dokumentacji mysql: Możesz zmniejszyć tę wartość w przypadku wysoce interaktywnych aplikacji lub systemów OLTP, aby szybko wyświetlić opinie użytkowników lub umieścić aktualizację w kolejce do późniejszego przetworzenia. Możesz zwiększyć tę wartość w przypadku długotrwałych operacji zaplecza, takich jak krok transformacji w hurtowni danych, który czeka na zakończenie innych dużych operacji wstawiania lub aktualizacji.
g4b0
Sprawdzanie, czy aplikacja jest źle zbudowana ... tak!
Noah Duncan,