Не могу понять, что значит избежать блокировок БД
дали тестовое задание на стеке PHP 7.*, Laravel 8. копипастить тз я не буду, но задание это сделать сайт "статейник" с парой страниц
- Главная
- Каталог статей
- Страница статьи
статью можно лайкать, при открытии статьи через 5 секунд отправляется запрос который инкрементирует счетчик просмотров статьи. и в тестовом в конце есть такой пункт
При реализации API методов учтите, что онлайн блога заранее не известен. Ваша реализация должна позволять избежать блокировок БД в случае огромного количества входящих запросов (допустим 1 млн входящих запрос на инкрементацию счетчика просмотров). Это требования необходимо вам для организации правильного хранения лайков и просмотров.
я гуглил. нагуглил только то что "блокировка бд" это транзакции... и почитал статьи о оптимизации запросов на Laravel, но мне кажется это не то что мне нужно. ну и вот с связи с этим у меня вопросы с которыми я не могу разобраться сам
- Что такое блокировка БД от большого количества запросов?
- Как избежать этой самой блокировки?
- Есть ли решения для этой проблемы в Laravel?
Ответы (1 шт):
Возможно имеется в виду, что нужен какой-то слой кэширования.
Например, держим счётчик в памяти, а в БД сохраняем не чаще раза в секунду.
Ну и при чтение достаём аналогично: если есть в памяти, берём оттуда, если нет, то считываем из базы и кэшируем.