mysql - 每 n 秒自动从数据库中删除过时的行

标签 mysql linux amazon-web-services

我有一个包含时间戳列的数据库,我想删除过时的数据。

所以我的想法是将一个 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/

相关文章:

php - PDO错误:SQLSTATE[42000]: Syntax error or access violation: 1064

linux - 在 BASH 中取消定义变量

amazon-web-services - 使用 CloudFront 和目录重定向的 AWS S3 静态网站托管

php - 从多个mysql表中删除数据

mysql - Linux SED AWK Sqlite 转储到 MySQL 将以 create table 开头的行上的字符串更改为 varchar

linux - 如何在另一个文件中查找 ip 地址列表

Linux 或 Mac : merging columns from different files mixes the columns

amazon-web-services - 如何在启动时将数据从 docker 容器复制到 ECS(AWS)?

node.js - AWS Amplify 教程无法启动客户端应用程序

php - 多个查询不被执行