gpt4 book ai didi

mysql - 删除所有超过 15 分钟的条目

转载 作者:可可西里 更新时间:2023-11-01 06:37:03 24 4
gpt4 key购买 nike

我有一个表,每分钟大约有 10-15k 个条目。每一个都在输入时标有当前时间戳。该表是一个 MEMORY 表,因为丢失数据不是问题。

每一分钟,我都有一个运行以下查询的脚本:

DELETE FROM tracker WHERE post_time < DATE_SUB(NOW(), INTERVAL 15 MINUTE)

此查询运行大约需要 1-2 秒,这还不错,但似乎这种类型的查询(删除所有早于 X 的内容)应该能够执行得更快针对 MEMORY 表运行时。它也有一个相应的 CPU 峰值,每分钟都会像拇指一样突出。

是否可以对我的查询进行任何优化以更有效地运行此查询?

最佳答案

与往常一样,您应该查看查询计划,并将其张贴在这里。您可以通过发出 EXPLAIN DELETE FROM tracker WHERE post_time < DATE_SUB(NOW(), INTERVAL 15 MINUTE) 来做到这一点

现在,问题可能是 DELETE 查询无法使用索引,并且必须遍历所有行。

即使您已经在 post_time 上有一个索引,它也可能不会被使用,因为默认情况下 MEMORY 表上的索引是哈希索引。哈希索引只能用于相等性检查,不能用于 post_time < DATE_SUB(NOW(), INTERVAL 15 MINUTE) 等范围

在您的 post_time 列上创建一个 BTREE 索引,

CREATE INDEX post_time_idx ON tracker (post_time) USING BTREE;

关于mysql - 删除所有超过 15 分钟的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6641198/

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