Бази даних · Senior · Запитання 13 з 75
Багато запитів оновлюють той самий рядок-лічильник (UPDATE stats SET views = views + 1 WHERE id = 1). У чому проблема і як її вирішити?
- 1PostgreSQL губить частину збільшень
- ✓Правильна відповідь: Усі оновлення вишиковуються в чергу на блокування одного рядка (гарячий рядок); розподіліть лічильник на кілька рядків або накопичуйте збільшення й скидайте пакетами
- 3Оновлення щоразу потрапляє у взаємоблокування
Пояснення
Кожне оновлення чекає, доки закомітиться попереднє. Шардовані лічильники (N рядків, що сумуються при читанні) або підрахунок у Redis з періодичним скиданням прибирають конкуренцію.