我有一个短网址网站,现在越来越受欢迎。我保存了一年内每个用户在网站上创建的短网址的统计数据,以便他们可以查看其网址的访问量。
数据库变得相当大,我想知道如何通过每晚运行此命令来清除条目?我希望它像 chmod 一样运行,但我不知道如何做到这一点,以及是否可能?是的,在哪里,我可以在 WHM / Cpanel 中执行此操作吗?或者有人可以描述如何通过 SSH 执行此操作吗?我熟悉 SSH,所以没问题。
DELETE FROM `stats` WHERE dt < DATE_SUB(NOW(), INTERVAL 3 YEAR);
答案1
警告:使用前请检查详细信息:
计划 A(在 Linux 等上):使用cron
0 0 * * * mysql -uuser -ppwd -e 'DELETE FROM mydb.stats WHERE dt < NOW() - INTERVAL 3 YEAR'
请参阅mysql_config_editor
隐藏密码的方法
计划 B(Windows):使用at
并做一些类似于的事情cron
。
(见手册)
计划 C(MySQL 内部):设置一个EVENT
CREATE DEFINER=`root`@`localhost`
EVENT `ev5` ON SCHEDULE EVERY 1 DAY STARTS '2022-08-12'
ON COMPLETION NOT PRESERVE DISABLE
DO
DELETE FROM stats WHERE dt < NOW() - INTERVAL 3 YEAR
另外:这将有利于stats
:
INDEX(dt)
如果每次删除都有数千行,PARTITIONing
则可以提高速度: 分割 (我会PARTITION BY RANGE
使用每周分区和DROPs
。)
(我不知道你在这种情况下所说的‘chmod’是什么意思。)
我认为ssh
如果您需要在单独的机器上使用“cron”,可以将其添加到 cron 方法中。