Ons*_*nst 0 mysql linux innodb
每周都会触发一个 cronjob,从使用 InnoDB 引擎的 MySQL 表中删除大约 500,000 条记录。该表包含每周处理的网络日志数据,之后不再需要的数据将被删除。这个表有 3 个索引(没有外键),包括 time,它是一个 unix 时间戳。
从 global_viewlog 中删除时间<1354391592
问题是上周运行的这个查询需要 2 个多小时才能运行,在此期间我的整个服务器都在滞后。'iotop' 揭示了被 MySQL 引用大量写入的硬盘,服务器负载急剧增加到不健康的水平。
每次点击都会写入表格。房间里有没有我没看到的大象?即,优化这个每周查询的一些显而易见的事情?
谢谢
如果您定期根据时间删除旧数据,则根据同一列对表进行分区会使其速度更快。它将不同的时间段分隔到磁盘上的不同区域,因此删除只是删除整个块而不是查看单个行。
http://dev.mysql.com/doc/refman/5.5/en/partitioning.html