@Vadim1899

Удалять из бд лайки или ставить isActive = 0?

Слышал, что в БД при удалении записи лучше ее не удалять, а ставить флаг isActive = 0, к примеру, и не учитывать в выборках из-за фрагментации диска (?).

Сейчас пишу логику для лайков у постов и задался вопросом, а как лучше сделать:
1. Самый простой вариант - удалять лайки из бд при анлайке и инсертить при лайке
2. При анлайке у записи ставить флаг isActive = 0. В таком случае при лайке этого же поста сценария два: заново инсертить лайк (в таком случае если пользовать кучу раз нажал "лайк"-"анлайк", то в таблице будет много лишних записей. Второй вариант - искать, есть ли в таблице лайк на пост с isActive = 0 и просто ставить isActive = 1. Если записи нет, то инсеритить. Но тогда логика и количество запросов к бд вырастает (тут мне кажется просто велосипед изобрел).

Как бы вы реализовали подобный механизм?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 3
iiiBird
@iiiBird
Пока ты спишь - твой конкурент совершенствуется
используй INSERT ... ON DUPLICATE KEY UPDATE https://dev.mysql.com/doc/refman/8.0/en/insert-on-...
по user_id тобишь
Ответ написан
Комментировать
HemulGM
@HemulGM
Delphi Developer, сис. админ
INSERT OR UPDATE
Ответ написан
Комментировать
Fockker
@Fockker
Потомок старинного рода Ипатьевых-Колотитьевых
Это пустые страхи.
Никакой "фрагментации" "диска"в таблице из двух числовых полей (то есть с фиксированным размером записи) не будет. БД прекрасно сама повторно использует ячейки удалённых записей.
Поэтому, как правильно сказал Akina, мягкое удаление для лайков делать бессмысленно
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы