gpt4 book ai didi

mysql - 关于 MySQL 表上的垃圾收集/自动删除的问题

转载 作者:搜寻专家 更新时间:2023-10-30 23:13:45 25 4
gpt4 key购买 nike

我正在为 MySQL 数据库编写一些表,在这些表中我有只需要几周的条目。

例如:

create table LoginAttempts (
ReferenceId int unsigned auto_increment not null,
UserId smallint unsigned not null,
EventTime timestamp not null...)

现在我不需要永远保留用户登录尝试的记录,所以我计划在比方说 30 天后删除它们。显然我需要这个操作自动发生。我最初的想法是向该表添加一个触发器,该触发器将在每次对表进行输入时运行。基本上,它只是将每一行的时间戳与当前时间戳进行比较——如果超过 30 天,该行将被删除。

但是,我担心可能会影响性能。这种方法,至少对我来说,似乎效率低下。应该有更好的方法。那么,我怎样才能以更好的方式实现我想做的事情 - 如果有的话?

最佳答案

使用定时任务或 MySql events 为此。

如果你使用 mysql 事件,你会创建一个这样的事件

CREATE EVENT event_name
ON SCHEDULE EVERY 1 DAY
DO
DELETE
FROM LoginAttempts
WHERE DATEDIFF(CURDATE(), DATE(EventTime)) > 30;

使用 SHOW PROCESSLIST 检查是否启用了事件调度程序。如果它打开,您应该看到用户“event_scheduler”的进程“Daemon”。使用 SET GLOBAL event_scheduler = ON; 启用调度程序(如果当前未启用)。有关配置事件调度程序的更多信息 here

关于mysql - 关于 MySQL 表上的垃圾收集/自动删除的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17006988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com