innodb_ft_min_token_size = 1 влияние на производительность - PullRequest
4 голосов
/ 10 февраля 2020

Если я изменю innodb_ft_min_token_size = 1 по умолчанию на 3, это приведет к гораздо большему использованию диска? Есть ли проблемы с производительностью поиска?

Я хочу иметь возможность использовать полнотекстовый поиск в 1 знаке в словах.

Кроме того, как только я внесу это изменение, как мне перестроить индекс? Будет ли это сильно загружать сервер?

1 Ответ

4 голосов
/ 12 февраля 2020

Не так много одно- и двухбуквенных слов, поэтому изменение пробела может быть не таким значительным. сервер.

Чтобы перестроить индексы FULLTEXT для таблицы InnoDB, используйте ALTER TABLE с опциями DROP INDEX и ADD INDEX для удаления и повторного создания каждого индекса.

- https://dev.mysql.com/doc/refman/8.0/en/fulltext-fine-tuning.html

"Сфера действия" innodb_ft_min_token_size является "Глобальной". То есть он применяется ко всем индексам FT InnoDB.

- 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 для китайского, et c.

...