如果我将innodb_ft_min_token_size = 1从默认值3更改,这会导致更多的磁盘使用吗?搜索是否有性能问题?
我希望能够使用1个字符的单词进行全文搜索。
此外,一旦做出更改,我将如何重建索引?这会给服务器带来很多负担吗?
没有那么多的1和2个字母的单词,因此空格的变化可能不会太大。
[在my.cnf中修改innodb_ft_min_token_size,innodb_ft_max_token_size或ngram_token_size要求重新启动服务器。
要为InnoDB表重建FULLTEXT索引,请使用带有DROP INDEX和ADD INDEX选项的ALTER TABLE来删除并重新创建每个索引。
-https://dev.mysql.com/doc/refman/8.0/en/fulltext-fine-tuning.html
innodb_ft_min_token_size
的“范围”是“全局”。也就是说,它适用于所有InnoDB FT索引。
-https://dev.mysql.com/doc/refman/5.7/en/innodb-parameters.html#sysvar_innodb_ft_min_token_size
重新创建索引将读取整个表并重建FT索引,这将在某个级别将表“锁定”一段时间。重建时间将与表的大小大致成比例。在完成之前,它将消耗大量额外的磁盘空间。 (将复制表和所有索引,并至少重建FT索引。)
如果您有一千行,没什么大不了的。如果您有十亿行,那么您将需要很长的“停机时间”。
更改了innodb_ft_max_token_size后,我会害怕进行简短的通配符测试,例如
AGAINST('a*' IN BOOLEAN MODE)
如果您有测试服务器,只需尝试一下。
[我注意到文档建议中文为1等。