Sobes.tech
Junior — Middle

Já enfrentou situações em que o número de visualizações de um artigo na base de dados aumentava incorretamente quando vários utilizadores abriam o artigo ao mesmo tempo?

sobes.tech IA

Resposta da IA

Да, такая проблема возникает из-за состояния гонки при одновременном обновлении счётчика просмотров в базе данных несколькими пользователями. Если несколько запросов одновременно читают текущее значение просмотров, увеличивают его и записывают обратно, некоторые обновления могут потеряться.

Для решения можно использовать:

  • Транзакции с блокировкой: блокировать запись при обновлении, чтобы другие запросы ждали.
  • Атомарные операции базы данных: например, SQL-запрос UPDATE articles SET views = views + 1 WHERE id = ? выполняет увеличение атомарно.
  • Оптимистическую блокировку: проверять версию записи перед обновлением.

Пример атомарного обновления в SQL:

UPDATE articles SET views = views + 1 WHERE id = 123;

Это гарантирует, что увеличение просмотров будет корректным даже при одновременных запросах.