【发布时间】:2012-12-02 05:25:20
【问题描述】:
每周都会触发一个 cronjob,从使用 InnoDB 引擎的 MySQL 表中删除大约 500,000 条记录。该表包含用于每周处理的 Web 日志数据,然后删除不再需要的数据。此表上有 3 个索引(无外键),包括时间,这是一个 unix 时间戳。
从 global_viewlog 中删除时间
问题在于,上周运行的此查询需要 2 多个小时才能运行,而在此期间,我的整个服务器都出现了滞后。 'iotop' 揭示了被 MySQL 引用大量写入的硬盘,并且服务器负载急剧增加到不健康的水平。
每次点击都会写入表格。房间里有我没看到的大象吗?即,优化这个每周查询的一些显而易见的事情?
谢谢
【问题讨论】:
-
您的日志文件大小是多少?如果它很小,那么您将缓冲写入磁盘的日志,这可能解释了硬盘抖动。
-
您是使用事务来执行此操作还是天真?您对数据有哪些指标?