2010-06-22 2 views
1

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

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

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

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

+0

Может показаться пример одного из этих длинных запросов? – pjanaway

ответ

0

Какую версию 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.

+0

Это все реальное, за исключением того, что я подменил имена поддельных таблиц и столбцов, а также фальшивый термин поиска, но реальный поисковый запрос был одинаков. Мы удалили способность пользователей вводить дикие карты в середине слов, но, похоже, это повторяющаяся вещь. У нас также были проблемы с пользователями, которые искали "." в середине слов. Кажется, это постоянная проблема со многими персонажами. Возможно, лучшим вариантом является обновление, и все проблемы исчезнут. – Kibbee

+0

Какую версию MySQL вы используете? –

Смежные вопросы