删除后数据库表很慢

kof*_*kof 4 mysql database google-app-engine innodb

我有一个在 Google App-Engine 上运行的 MySQL InnoDB 数据库。其中一个表将当前日期和 user_id 作为主键与一些附加数据一起存储。该表有大约 700 万行,我使用 DELETE 查询删除了其中的 600 万行。因为使用这个表的任何查询都比以前慢得多。

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

提前致谢!

Tho*_*s G 5

在innodb上进行如此大规模的删除之后,您最好使用OPTIMIZE table语句

在这些情况下使用 OPTIMIZE TABLE,具体取决于表的类型:

  • 在对具有自己的 .ibd 文件的 InnoDB 表执行大量插入、更新或删除操作之后,因为它是在
    启用 innodb_file_per_table 选项的情况下创建的。
    重新组织表和索引,可以回收磁盘空间以供操作系统使用。

  • 在对属于 InnoDB 表中 FULLTEXT 索引一部分的列执行大量插入、更新或删除操作之后。首先设置配置选项 innodb_optimize_fulltext_only=1。要将
    索引维护期保持在合理的时间,请设置
    innodb_ft_num_word_optimize 选项以指定要
    在搜索索引中更新多少字,并运行一系列 OPTIMIZE TABLE
    语句,直到搜索索引完全更新。

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

所有这些都可以在 phpmyadmin 中轻松完成。