我们有一个 mysql 表,在任何给定时间都有大约 1200 万行。我们需要删除旧数据以保持表的大小在某种程度上易于管理。
现在我们每天在午夜运行这个查询,使用 cron 作业:
DELETE FROM table WHERE endTime < '1393632001'
Run Code Online (Sandbox Code Playgroud)
上次运行查询时,它检查了 4,602,400,花费了 3 多分钟,CPU 崩溃了。
在清除旧数据的同时,我们可以做些什么来防止 CPU、同步数据库连接、磁盘提示深度等不合理地飙升?
PS:您会注意到查询实际上发生在我们使用周期中相当不合时宜的时间。假设我们已经将查询的时间转移到每天使用的最低点。此外,“endTime”上没有索引,如果可能的话,我更愿意保持这种方式,因为有大量数据被非常定期地插入,并且没有太多查找。
归档时间: |
|
查看次数: |
4523 次 |
最近记录: |