2016-11-19 154 views
1

我有一个在Google App-Engine上运行的MySQL InnoDB数据库。 其中一个表的当前日期和一个user_id作为主键存储在一些附加数据中。 该表有700万行左右,我用DELETE查询删除了600万行。由于使用此表的任何查询都比以前慢得多。数据库表删除后非常慢

任何想法可能会导致此行为或如何解决这个问题?

在此先感谢!

+0

如果您需要再次进行删除,请参阅[_Big deletes_(https://mariadb.com/kb/en/mariadb/big-deletes/) –

回答

1

后如此大规模的删除InnoDB的,你会更好地使用OPTIMISE table声明

使用OPTIMIZE TABLE在这些情况下,根据表的类型:

  • 做大量的插入后,更新,或在具有其自身的.ibd文件,因为它与
    启用innodb_file_per_table选项创建一个InnoDB表删除操作。该表和索引
    重组,磁盘空间,可以通过操作 系统被回收使用。

  • 上是一个InnoDB表中的FULLTEXT索引的一部分列在做大量的插入,更新或删除操作后。首先设置 配置选项innodb_optimize_fulltext_only = 1。为了保持
    索引维护期间在合理的时间,设置
    innodb_ft_num_word_optimize选项指定多少话
    更新的搜索索引,并运行OPTIMIZE TABLE序列
    语句,直到搜索索引被完全更新。

之前进行优化,检查使用ANALYSE TABLE表的状态,它使用SHOW INDEX的索引。这些说明将为您提供有关OPTIMIZE可修复的“缺陷”的信息。

这一切很容易在phpMyAdmin做。