您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何提高大型InnoDB表的DELETE FROM性能?

如何提高大型InnoDB表的DELETE FROM性能?

解决方案完成后可以提供更好的性能,但是该过程可能需要一些时间才能实现。

BIT可以添加一个新列,TRUE为“活动”和FALSE“非活动”。如果状态不够,则可以使用tinyint256个可能的值。

添加此新列可能会花费很长时间,但是一旦结束,您的更新就应该快得多,只要您PRIMARY删除操作一样,不对这个新列编制索引就可以了。

InnoDB之所以花这么长时间DELETE在如此庞大的表上,是因为集群索引。它根据您的PRIMARY,首先UNIQUE找到的表或可以找到的合适的替代表(如果找不到PRIMARY或)将UNIQUE其物理排序,因此,删除一行后,它现在将整个表在磁盘上重新排序以提高速度,碎片整理。所以花的时间不是DELETE那么长;这是删除该行后的物理重新排序。

创建固定宽度的列并对其进行更新而不是删除时,由于行和表本身消耗的空间是恒定的,因此无需对巨大的表进行物理重新排序。

在下班时间,DELETE可以使用一个删除不必要的行。与删除单个行相比,此操作将仍然很慢,但总体上要快得多。

SQL 2022/1/1 18:17:38 有519人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶