使用innodb_ft_num_word_optimize优化InnoDB表,如何判断优化完成?
如何判断InnoDB全文索引分阶段优化已完成?
可以通过以下几种方式判断分阶段优化是否全部完成:
查询INNODB_FT_CONFIG系统表
这个表记录了全文索引的关键配置和状态信息,其中两个变量能直接反映优化进度:total_word_count:全文索引中总共需要优化的词数optimize_checkpoint:当前已经完成优化的词数
执行以下SQL查询这两个值:
SELECT variable_name, variable_value FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG WHERE variable_name IN ('optimize_checkpoint', 'total_word_count');当
optimize_checkpoint的数值等于total_word_count时,说明所有词的优化已经完成。观察OPTIMIZE TABLE的执行耗时
当还有未优化的词时,执行OPTIMIZE TABLE your_table_name;会有实际的处理耗时(根据每次优化的词数多少,耗时从几秒到几分钟不等)。一旦所有词都优化完成,后续再执行该命令会瞬间完成,因为没有实际的优化操作需要执行。间接验证:对比全文索引性能
优化完成后,全文检索的查询速度应该会稳定在预期水平,不会再随着重复执行OPTIMIZE TABLE而提升。也可以通过SHOW TABLE STATUS LIKE 'your_table_name'\G查看表的全文索引相关状态,确认没有待处理的优化任务。
注意:每次执行分阶段优化前,需要先开启对应参数:
SET SESSION innodb_optimize_fulltext_only = 1;
执行完OPTIMIZE TABLE后,可以将参数重置为0:
SET SESSION innodb_optimize_fulltext_only = 0;
内容的提问来源于stack exchange,提问作者The Trav
相关产品推荐
相关产品推荐

