Я пытаюсь удалить просроченные записи в базе данных MySQL, при создании или обновлении поле с именем lastBeat обновляется с помощью CURRENT_TIME, и я использую следующий запрос для проверки / удаления строк старше 20 секунд:
DELETE * FROM `rmachines` WHERE
`lastBeat` < (NOW() - 20);
Я также попробовал CURRENT_TIME вместо NOW ()
Есть 2 основных цикла:
Обновляет строку в rmachines каждую секунду
Выполняет запрос на удаление
Если 2 выполняется быстро, когда время переносится на следующую минуту (т. Е. 59-60 секунд), он удаляет строку, как будто срок ее действия истек (даже если он определенно не имеет!), В противном случае он ведет себя нормально.
Если 2 выполняется раз в секунду, это не так заметно, «ложное истечение» происходит редко, но я запускаю его 5 раз в секунду, чтобы выявить «проблему».
Я нашел решение, протестировал и, кажется, работает в тех же сценариях:
задание по удалению строк старше 3 месяцев в базе данных mysql
Но кто-нибудь может сказать мне, почему мой метод не работает?