|
|
|
| Здравствуйте.
Отчего зависит скорость работы (время выборки) запроса MySql при FULLTEXT
От количества строк, от количества столбцов, от объема данных.
Все активней и активней работают роботы, база 3гб и2,5 млн записей (строк) и 30 колонок.
Я сократил число колонок до предела, объем стал 500 мб, СКОРОСТЬ НЕ ВОЗРОСЛА(время выборки при поиске)
Я понимаю, что пора ставить другую систему, но что можно сделать в экстренном порядке, для сокращения времени выборки при поиске MySql при FULLTEXT?
(сильно грузят роботы, так как они стали вдруг одновременно обход делать по поиску) | |
|
|
|
|
|
|
|
для: добряк
(29.01.2014 в 16:00)
| | Если удалённые колонки не участвовали в fulltext индексе, то ничего удивительного.
1. Переместить таблицу с индексами на более быстрый диск (SAS/SSD/tmpfs)
2. Увеличить key_buffer_size
3. Если большая часть запросов одинаковая, можно прикрутить кеш
4. Разбить таблицу на части, разместить их на разных серверах и делать запрос одновременно на все сервера | |
|
|
|
|
|
|
|
для: Саня
(29.01.2014 в 18:30)
| | >3. Если большая часть запросов одинаковая, можно прикрутить кеш
вроде как в mysql есть встроенный кэш, который обрабатывает повторяющиеся одинаковые запросы | |
|
|
|
|
|
|
|
для: psychomc
(29.01.2014 в 19:23)
| | С ним ещё надо уметь правильно обращаться. Этот рубильник не из серии "включил - и стало круто". | |
|
|
|
|
|
|
|
для: Саня
(29.01.2014 в 19:35)
| | конечно, в идеале нужно писать тесты и профилировать | |
|
|
|
|
|
|
|
для: Саня
(29.01.2014 в 19:35)
| | Уменьшил количество строк в таблице в 10 раз, а скорость поиска не изменилась
Уменьшил количество строк в таблице в 10 раз,а скорость поиска не изменилась
Фактичеески она стала 200 000, а потом 20 000.
Старнно?! | |
|
|
|
|
|
|
|
для: добряк
(04.02.2014 в 15:56)
| | А как вы меряете скорость выполнения запросов? | |
|
|
|
|
|
|
|
для: psychomc
(29.01.2014 в 19:23)
| | Как я понимаю, у меня какой то оптимизатор, который похожие запросы обрабатывает быстрее.
Кеш делает nginx, если он настрен. Хотя можно где угодно его делать
Но для поисковых запросов, при больших базах - не экономно.
Яндекс молотит все время поисковые запросы (поиск по сайту), нафига ему давал XML спрашивается, а показывает только картинки
Буду разбивать на таблицы. | |
|
|
|
|
|
|
|
для: Саня
(29.01.2014 в 18:30)
| | Извините я не знаю где, как и чем устанавливается key_buffer_size
Подскажите пожалуйста где и как это сделать
> 3. Если большая часть запросов одинаковая, можно прикрутить кеш
Как прикрутить
> 1. Переместить таблицу с индексами на более быстрый диск (SAS/SSD/tmpfs)
А как к нему обращаться | |
|
|
|
|
|
|
|
для: добряк
(02.02.2014 в 20:18)
| | key_buffer_size настраивается в конфигурационном файле mysql — my.ini (my.cfg в линуксах).
Определяете самые частые поисковые запросы к таблице и сохраняете их результат в файле на диске/в памяти. При последующих запросах, результат берите не из базы, а из файла. В итоге закешированные запросы будут "выполняться" быстрее.
Для начала узнайте, есть ли на вашем сервере диск SAS или SSD и имеете ли вы к нему доступ. Для tmpfs нужно узнать размер оперативной памяти, который можно выделить под ram диск, чтобы разместить на нём вашу таблицу с индексами. | |
|
|
|