mysql - innodb_ft_min_token_size = 1 性能影响

标签 mysql full-text-search

如果我将 innodb_ft_min_token_size =1 从默认值 3 更改为 1,这会导致更多的磁盘使用吗?搜索有性能问题吗?

我希望能够在单词中的 1 个字符中使用全文搜索。

此外,一旦我进行了此更改,我将如何重建索引?这会给服务器带来很多负载吗?

最佳答案

没有那么多 1 和 2 个字母的单词,所以空间变化可能不是很大。

Modifying innodb_ft_min_token_size, innodb_ft_max_token_size, or ngram_token_size [in my.cnf] requires restarting the server.

To rebuild FULLTEXT indexes for an InnoDB table, use ALTER TABLE with the DROP INDEX and ADD INDEX options to drop and re-create each index.


-- https://dev.mysql.com/doc/refman/8.0/en/fulltext-fine-tuning.htmlinnodb_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。

关于mysql - innodb_ft_min_token_size = 1 性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60143351/

相关文章:

php - MySQL 全文找不到行

mysql - 我可以删除 mysql localhost.log 文件吗

mysql - 在 MySQL 中创建查询返回疯狂的数字

mysql - 手动将 MySQL 数据库文件放入数据文件夹 - WAMP - XAMPP

带连字符的 SQLite 全文搜索查询

mysql - MySQL 中的全文搜索 - 多个搜索词、部分搜索词、带撇号、不带撇号

php - 当用户对表的输入可以任意组合时,如何构建 SQL 语句?

mysql - 单引号用两个单引号转义时的SQL注入(inject)

mysql - 使用 Mysql 进行 ElasticSearch 数据建模

search - 理解Apache Lucene的评分算法