Bazy danych · Senior · Pytanie 13 z 75
Wiele żądań aktualizuje ten sam wiersz licznika (UPDATE stats SET views = views + 1 WHERE id = 1). Jaki jest problem i rozwiązanie?
- 1PostgreSQL gubi część przyrostów
- ✓Poprawna odpowiedź: Wszystkie aktualizacje szeregują się na blokadzie jednego wiersza (gorący wiersz); rozłóż licznik na kilka wierszy albo buforuj przyrosty i zapisuj je partiami
- 3Aktualizacja za każdym razem się zakleszcza
Wyjaśnienie
Każda aktualizacja czeka na commit poprzedniej. Shardowane liczniki (N wierszy sumowanych przy odczycie) albo liczenie w Redisie z okresowym zapisem usuwają rywalizację.