如何延迟删除?
How can I delay deletion?
我想延迟从数据库中删除数据。我正在使用 MySQL、nest.js。听说CRON正是我所需要的。我想在一周内删除该条目。你能帮我吗? CRON 是我需要的,还是我需要使用其他东西?
您可以配置一个 cronjob 来定期删除它。
配置 cron 作业的方法有多种。
您可以编写一个 shell 脚本,使用 linux crontab 定期删除数据库中的实体,或者您可以配置一个提供 cronjobs 的应用程序,例如 jenkins 或 airflow。
AWS lambda 还提供了 cronjob。
使用nestjs提供的crontab貌似是最简单的解决问题了
可以创建 cron
作业(或 Windows 中的 at
)或 MySQL EVENT
以定期检查某些内容并采取行动。分辨率只有1分钟。
如果您需要非常精确的分辨率,则需要另一种技术。例如,如果您不想向用户显示超过 1 周前 到第二个 的内容,则只需将其从 SELECT
中排除。那就是在 WHERE
中添加这样的内容:AND created_date >= NOW() - INTERVAL 7 DAY
.
执行上述操作后,您就可以自由地安排实际的 DELETE
时间,比如说,一天一次——而不是在数据库上敲打,通常却发现无事可做。
如果您确实选择“敲打数据库”,请注意以下问题。如果删除脚本的一个实例 运行 很长一段时间(出于多种原因中的任何一个),它可能不会在下一个副本出现之前完成。在某些情况下,这些脚本会相互干扰,以至于有效地“崩溃”服务器。
这导致另一种解决方案 -- 永远运行的单个脚本。它有一个简单的循环:
- 执行所需的操作(删除旧行)
- 睡 1 次——或 10 次或 60 次或其他什么——这是做一个“好人”而不是“打击系统”。
唯一棘手的部分是确保在任何服务器重启或脚本崩溃后启动。
我想延迟从数据库中删除数据。我正在使用 MySQL、nest.js。听说CRON正是我所需要的。我想在一周内删除该条目。你能帮我吗? CRON 是我需要的,还是我需要使用其他东西?
您可以配置一个 cronjob 来定期删除它。
配置 cron 作业的方法有多种。
您可以编写一个 shell 脚本,使用 linux crontab 定期删除数据库中的实体,或者您可以配置一个提供 cronjobs 的应用程序,例如 jenkins 或 airflow。 AWS lambda 还提供了 cronjob。
使用nestjs提供的crontab貌似是最简单的解决问题了
可以创建 cron
作业(或 Windows 中的 at
)或 MySQL EVENT
以定期检查某些内容并采取行动。分辨率只有1分钟。
如果您需要非常精确的分辨率,则需要另一种技术。例如,如果您不想向用户显示超过 1 周前 到第二个 的内容,则只需将其从 SELECT
中排除。那就是在 WHERE
中添加这样的内容:AND created_date >= NOW() - INTERVAL 7 DAY
.
执行上述操作后,您就可以自由地安排实际的 DELETE
时间,比如说,一天一次——而不是在数据库上敲打,通常却发现无事可做。
如果您确实选择“敲打数据库”,请注意以下问题。如果删除脚本的一个实例 运行 很长一段时间(出于多种原因中的任何一个),它可能不会在下一个副本出现之前完成。在某些情况下,这些脚本会相互干扰,以至于有效地“崩溃”服务器。
这导致另一种解决方案 -- 永远运行的单个脚本。它有一个简单的循环:
- 执行所需的操作(删除旧行)
- 睡 1 次——或 10 次或 60 次或其他什么——这是做一个“好人”而不是“打击系统”。
唯一棘手的部分是确保在任何服务器重启或脚本崩溃后启动。