Таблица блокировки полнотекстовых запросов MySQL - PullRequest
1 голос
/ 22 июня 2010

Время от времени мы получаем особенно длительный полнотекстовый запрос в MySQL. Запрос будет выполняться очень долго, в настоящее время я вижу запрос, который выполняется в течение 50 000 секунд (и продолжает работать). Использование Kill или Kill Query в запросе, похоже, ничего не дает. Кроме того, команда Timeout на стороне клиента составляет 30 секунд, поэтому клиент уже вышел из строя и ушел, но сервер просто продолжает выполнять запрос, используя довольно много ресурсов. В прошлом нам приходилось перезапускать службу MySQL, чтобы такие запросы перестали выполняться. Есть ли другой способ остановить эти запросы. Мы принимаем меры для обеспечения того, чтобы запросы не выполнялись в первую очередь, но они по-прежнему запускаются время от времени, и это большая проблема. Главным образом потому, что во время выполнения запросов мы не можем выполнять обновления таблицы.

Примером длинного запроса может быть что-то вроде:

SELECT id,Title From Articles WHERE MATCH(ArticleText) AGAINST('+Nintendo*HD*Wii*' IN BOOLEAN MODE)

Это выполняется особенно долго из-за * в середине строки поиска, а также в конце строки.

1 Ответ

0 голосов
/ 23 июня 2010

Какую версию MySQL вы используете? Вы можете исправить это, обновив.

Кроме того, это пример запроса? Я ожидаю, что строка поиска будет выглядеть примерно так: '+ Nintendo * + HD * + Wii *' вместо '+ Nintendo HD Wii *.

У меня никогда не было проблем такого типа в 5.0, но в более ранних выпусках MySQL 5.1 я видел несколько очень похожих проблем, связанных с определенным содержимым в строке поиска, из-за которых полнотекстовый запрос зависал и не мог быть убит.

Вот то, что я видел в 5.1.42, которое было исправлено в 5.1.45: http://bugs.mysql.com/bug.php?id=50556 который был отмечен как обманщик: http://bugs.mysql.com/bug.php?id=50351

Я сообщил о другой проблеме с зависанием полнотекстовых запросов, когда строка поиска содержала двоеточие. Эта проблема существовала в 5.1.31 и была исправлена ​​в 5.1.37.

...