gpt4 book ai didi

mysql - 如何使用 innodb 引擎减少 mysql 中表的索引大小?

转载 作者:行者123 更新时间:2023-11-28 23:34:06 26 4
gpt4 key购买 nike

由于表中的索引大小过大,我在 mysql 中遇到了性能问题。索引大小已增长到 6GB,我的实例在 32GB 内存上运行。几个小时后,该表中的大部分行都不需要,可以有选择地删除。但删除它们是一个耗时的解决方案,并且不会减少索引大小。

请提出一些管理此索引的解决方案。

最佳答案

您可以优化您的表以重建索引并在删除后甚至没有得到空间的情况下取回空间-

optimize table table_name;

但是由于您的表很大,因此它会在优化表期间锁定,而且您还面临着如何删除旧数据的问题,即使您不需要几个小时的旧数据。所以你可以按照下面的方式做-

第 1 步:在夜间或数据库流量较少时,首先重命名主表并创建一个同名的新表。现在将几个小时的数据从旧表插入到新表。

通过这个你可以删除不需要的数据,新表也会被优化。

第 2 步:将来要避免此问题,您可以创建一个存储过程。这将在夜间仅每天执行 1 次,并从该表中删除直到前一天(根据您的要求)的数据,或者将数据移动到任何历史表。

第 3 步:因为现在您的表始终只保留单日数据,那么您可以执行优化表语句来轻松重建并在此表上收回空间。

注意:删除语句不会重建索引,也不会释放服务器上的空间。为此,您需要优化您的表。它可以通过各种方式,如通过 alter 语句或通过优化语句等。

关于mysql - 如何使用 innodb 引擎减少 mysql 中表的索引大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36325718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com