我有一个包含时间戳列的数据库,我想删除过时的数据。
所以我的想法是将一个 MySQL 查询写入一个 .php 文件,该文件删除 timestamp < current_timestamp - const
所在的每一行。 .因为会有很多行需要检查,所以我要为时间戳列设置一个索引。
那么我怎样才能每隔 n 秒自动运行这个脚本呢?我听说过 Linux crontab - 我可以在我的网络服务器(而不是数据库服务器)上使用它来定期执行 .php 文件吗?这总体上是一种从数据库中删除过时行的好技术吗?
数据库设置在 Amazon Web Services 上的 RDS 实例上。我的网络服务器是一个 EC2 实例(也是 Amazon Web Services)。
最佳答案
做这样的事情需要设置一个事件或工作。这样的努力使数据库非常繁忙。
我强烈推荐一种不同的方法。使用 View 访问您想要的数据:
create view v_t as
select t.*
from t
where timestamp > CURRENT_TIMESTAMP - ??;
然后使用此 View 访问数据。
然后,定期清理表格以删除您不需要的行。您可以每天一次、每周一次、每小时一次 - 删除可能发生在数据库负载较轻的时候,因此不会影响用户。
关于mysql - 每 n 秒自动从数据库中删除过时的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40693894/