Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Скорость( время выборки) работы MySql при FULLTEXT
 
 автор: добряк   (29.01.2014 в 16:00)   письмо автору
 
 

Здравствуйте.
Отчего зависит скорость работы (время выборки) запроса MySql при FULLTEXT
От количества строк, от количества столбцов, от объема данных.

Все активней и активней работают роботы, база 3гб и2,5 млн записей (строк) и 30 колонок.
Я сократил число колонок до предела, объем стал 500 мб, СКОРОСТЬ НЕ ВОЗРОСЛА(время выборки при поиске)

Я понимаю, что пора ставить другую систему, но что можно сделать в экстренном порядке, для сокращения времени выборки при поиске MySql при FULLTEXT?
(сильно грузят роботы, так как они стали вдруг одновременно обход делать по поиску)

  Ответить  
 
 автор: Саня   (29.01.2014 в 18:30)   письмо автору
 
   для: добряк   (29.01.2014 в 16:00)
 

Если удалённые колонки не участвовали в fulltext индексе, то ничего удивительного.

1. Переместить таблицу с индексами на более быстрый диск (SAS/SSD/tmpfs)
2. Увеличить key_buffer_size
3. Если большая часть запросов одинаковая, можно прикрутить кеш
4. Разбить таблицу на части, разместить их на разных серверах и делать запрос одновременно на все сервера

  Ответить  
 
 автор: psychomc   (29.01.2014 в 19:23)   письмо автору
 
   для: Саня   (29.01.2014 в 18:30)
 

>3. Если большая часть запросов одинаковая, можно прикрутить кеш
вроде как в mysql есть встроенный кэш, который обрабатывает повторяющиеся одинаковые запросы

  Ответить  
 
 автор: Саня   (29.01.2014 в 19:35)   письмо автору
 
   для: psychomc   (29.01.2014 в 19:23)
 

С ним ещё надо уметь правильно обращаться. Этот рубильник не из серии "включил - и стало круто".

  Ответить  
 
 автор: psychomc   (29.01.2014 в 19:52)   письмо автору
 
   для: Саня   (29.01.2014 в 19:35)
 

конечно, в идеале нужно писать тесты и профилировать

  Ответить  
 
 автор: добряк   (04.02.2014 в 15:56)   письмо автору
 
   для: Саня   (29.01.2014 в 19:35)
 

Уменьшил количество строк в таблице в 10 раз, а скорость поиска не изменилась
Уменьшил количество строк в таблице в 10 раз,а скорость поиска не изменилась

Фактичеески она стала 200 000, а потом 20 000.
Старнно?!

  Ответить  
 
 автор: Саня   (05.02.2014 в 12:50)   письмо автору
 
   для: добряк   (04.02.2014 в 15:56)
 

А как вы меряете скорость выполнения запросов?

  Ответить  
 
 автор: добряк   (29.01.2014 в 20:42)   письмо автору
 
   для: psychomc   (29.01.2014 в 19:23)
 

Как я понимаю, у меня какой то оптимизатор, который похожие запросы обрабатывает быстрее.

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

Яндекс молотит все время поисковые запросы (поиск по сайту), нафига ему давал XML спрашивается, а показывает только картинки

Буду разбивать на таблицы.

  Ответить  
 
 автор: добряк   (02.02.2014 в 20:18)   письмо автору
 
   для: Саня   (29.01.2014 в 18:30)
 

Извините я не знаю где, как и чем устанавливается key_buffer_size
Подскажите пожалуйста где и как это сделать

> 3. Если большая часть запросов одинаковая, можно прикрутить кеш
Как прикрутить

> 1. Переместить таблицу с индексами на более быстрый диск (SAS/SSD/tmpfs)
А как к нему обращаться

  Ответить  
 
 автор: Саня   (05.02.2014 в 12:56)   письмо автору
 
   для: добряк   (02.02.2014 в 20:18)
 

key_buffer_size настраивается в конфигурационном файле mysql — my.ini (my.cfg в линуксах).

Определяете самые частые поисковые запросы к таблице и сохраняете их результат в файле на диске/в памяти. При последующих запросах, результат берите не из базы, а из файла. В итоге закешированные запросы будут "выполняться" быстрее.

Для начала узнайте, есть ли на вашем сервере диск SAS или SSD и имеете ли вы к нему доступ. Для tmpfs нужно узнать размер оперативной памяти, который можно выделить под ram диск, чтобы разместить на нём вашу таблицу с индексами.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования