【问题标题】:Database Table very slow after delete删除后数据库表非常慢
【发布时间】:2017-04-03 03:55:41
【问题描述】:
我有一个在 Google App-Engine 上运行的 MySQL InnoDB 数据库。
其中一张表具有当前日期和 user_id 作为主键,其中存储了一些附加数据。
该表有大约 700 万行,我使用 DELETE 查询删除了其中的 600 万行。因为使用此表的任何查询都比以前慢得多。
任何想法可能导致这种行为或如何解决这个问题?
提前致谢!
【问题讨论】:
标签:
mysql
database
google-app-engine
innodb
【解决方案1】:
在对innodb进行如此大规模删除之后,您最好使用OPTIMISE table声明
在这些情况下使用 OPTIMIZE TABLE,具体取决于表的类型:
对 InnoDB 表执行大量插入、更新或删除操作后,该表具有自己的 .ibd 文件,因为它是使用
创建的
启用了 innodb_file_per_table 选项。表和索引是
重新组织,并且可以回收磁盘空间以供操作
系统。
在对属于 InnoDB 表中的 FULLTEXT 索引的列执行大量插入、更新或删除操作之后。设置
首先配置选项 innodb_optimize_fulltext_only=1。保持
将索引维护周期设置为合理的时间,设置
innodb_ft_num_word_optimize 选项指定要多少个单词
在搜索索引中更新,并运行一系列 OPTIMIZE TABLE
语句,直到搜索索引完全更新。
在优化之前,使用ANALYSE TABLE检查表的状态,使用SHOW INDEX检查它的索引。这些说明将为您提供有关 OPTIMIZE 可以修复的“缺陷”的信息。
这一切在 phpmyadmin 中都很容易做到。