Mam tabelę innoDB, która rejestruje użytkowników online. Jest aktualizowany przy każdym odświeżeniu strony przez użytkownika, aby śledzić, na których stronach się znajduje i kiedy miał datę ostatniego dostępu do witryny. Następnie mam crona, który działa co 15 minut, aby usunąć stare rekordy.
Podczas próby uzyskania blokady znaleziono „Zakleszczenie”; spróbuj ponownie uruchomić transakcję przez ostatnią noc przez około 5 minut i wydaje się, że dzieje się tak podczas uruchamiania INSERTów w tej tabeli. Czy ktoś może zasugerować, jak uniknąć tego błędu?
=== EDYCJA ===
Oto uruchomione zapytania:
Pierwsza wizyta na stronie:
INSERT INTO onlineusers SET
ip = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
Odśwież stronę na każdej stronie:
UPDATE onlineusers SET
ips = 123.456.789.123,
datetime = now(),
userid = 321,
page = '/thispage',
area = 'thisarea',
type = 3
WHERE id = 888
Cron co 15 minut:
DELETE FROM onlineusers WHERE datetime <= now() - INTERVAL 900 SECOND
Następnie rejestruje niektóre statystyki (np. Członkowie online, odwiedzający online).