插入100k记录时,Sql插入查询速度减慢

时间:2017-08-30 11:21:09

标签: mysql query-performance

我有一张包含2000万条记录的表格。 每天我删除100K记录并插入100K记录,但是当我插入记录时需要更多时间。

表有一个聚簇索引(主键)。

删除记录后我已经尝试了sp_updatestats

2 个答案:

答案 0 :(得分:0)

那么,您要保留大约200天的数据吗? (也许6个月?)你是否删除了最古老的一天?什么是PRIMARY KEY?也许AUTO_INCREMENT?如果没有,那么我们需要研究它。你有一些日期时间或时间戳列。

PARTITION BY RANGE(TO_DAYS(datetime))进入约28周。然后每周DROP PARTITIONREORGANIZE PARTITIONS future INTO next_week, future。更多详情here

这样,删除将是“即时的”,创建新分区也是如此。并且其他分区不会被搞乱,从而避免了目前导致它“花费更多时间”的任何分区。

如果您需要进一步讨论,请提供SHOW CREATE TABLE并告诉我们您是如何进行大删除的。

答案 1 :(得分:0)

你遇到了臃肿的表格。当您删除记录时,mysql永远不会释放磁盘空间,因此选择和插入需要查找已删除的所有垃圾,导致您的速度减慢。这是我选择将postgres用于非平凡项目的主要原因之一。您的实际问题是您的数据库设置选择。

您最好的选择是按日期对表格进行分区。我发现这会在你的情况下大大加快速度。 https://dev.mysql.com/doc/refman/5.5/en/partitioning-range.html

编辑:这也值得您花时间阅读:https://www.jeffgeerling.com/blogs/jeff-geerling/reclaim-your-hard-drive-saving