Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 25 Май, 2012, 09:39:00

Страниц: [1] 2
Печать
Автор Тема: Уменьшение нагрузки на MySQL  (Прочитано 2415 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kuzya    ↓ 
21 Июль, 2008, 04:33:58
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 26
Сила слова: 0

Нужно написать поиск по базе новостей. Естественно запросы на выборку совпадений идут примерно такие
"SELECT ... FROM ... WHERE ... LIKE %слово%"
вот из-за %слово% нагрузка на MySQL сильно возрастает. EXPLAIN показывает что задеваются все записи в базе (а их несколько тысяч). Подскажите какие-либо варианты уменьшения такой нагрузки.
Записан

white-team.net
megabit    ↓ 
21 Июль, 2008, 04:35:44 , спустя 1 минуту 46 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 6
Сообщений: 362
Сила слова: 1.66

выбирать те поля которые нужны а не все
т.е не SELECT * FROM....  а SELECT id,name,about..... FROM
Записан
CTAPbIu_MABP    ↓ 
21 Июль, 2008, 04:49:52 , спустя 14 минут 8 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

megabit, бред!
 
Kuzya, http://mabp.kiev.ua/content/2008/04/26/search_engine_works_now/
нормально все работает
навесь на БД индексы где надо и будет тебе щастя
Записан

java.lang.OutOfMemoryError
megabit    ↓ 
21 Июль, 2008, 04:54:19 , спустя 4 минуты 27 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 6
Сообщений: 362
Сила слова: 1.66

а скажи что быстрее если 1000 запесей во всех полях
и что будет быстрее SELECT * FROM `table` или SELECT только нужных полей FROM `table` ???
Записан
aivee    ↓ 
21 Июль, 2008, 05:16:39 , спустя 22 минуты 20 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи

Карма: 28
Сообщений: 1659
Сила слова: 1.69

только нужных полей
но ведь для новостей возможне все поля будут нужны
Записан

21st century slave
sap    ↓ 
21 Июль, 2008, 05:41:27 , спустя 24 минуты 48 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Жмурики

Карма: 40
Сообщений: 2697
Сила слова: 1.48

Все очень редко бывают нужны.
Записан

CTAPbIu_MABP    ↓ 
21 Июль, 2008, 05:45:29 , спустя 4 минуты 2 секунды
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

megabit,
 
1 не храни в одной таблице стока мусора
 
2 скорость от этого зависит слабо, даже дело не в скорости поиска, дело в том что когда ты извлекаешь больше инфы ты расходуешь больше памяти и время увеличиваеться засчет доступа к этой памяти. а если у тебя в таблице текс,автор,дата,категори то ты ничего не секономишь если будешь выбирать только текст.
 
3 если тебе всетаки надо хранить текст на 2 и более языках то используй таблицы с префиксом для каждого языка и отдельную для метаинформации
Записан

java.lang.OutOfMemoryError
megabit    ↓ 
21 Июль, 2008, 05:48:48 , спустя 3 минуты 19 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 6
Сообщений: 362
Сила слова: 1.66

1. у него записей несколько тысяч
Записан
CTAPbIu_MABP    ↓ 
21 Июль, 2008, 06:13:33 , спустя 24 минуты 45 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

megabit, иди учи мат часть
компания mysql разрабатывала свою бд на нескольких милионах записей
Записан

java.lang.OutOfMemoryError
Kuzya    ↓ 
21 Июль, 2008, 09:43:17 , спустя 3 часа 29 минут 44 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 26
Сила слова: 0

выбирать те поля которые нужны а не все
Выбираются только id новостей.
навесь на БД индексы где надо и будет тебе щастя
Дело в том что поиск происходит по полям типа TEXT и не "слово%" а "%слово%" - насколько я знаю при этом варианте индексы не задействуются.
Записан

white-team.net
adw0rd    ↓ 
21 Июль, 2008, 10:39:50 , спустя 56 минут 33 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17633
Сила слова: 1.67

Kuzya, да, при втором варианте не задействуются на сколько я знаю. Может юзать http://www.mysql.ru/docs/man/Fulltext_Search.html ?
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
Kuzya    ↓ 
22 Июль, 2008, 08:11:51 , спустя 9 часов 32 минуты 1 секунду
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 26
Сила слова: 0

Хеее, спасибо, работает как и нужно было =)
старый запрос (с LIKE) выполняется 0.0170
с MATCH - 0,0017 =)
Записан

white-team.net
adw0rd    ↓ 
22 Июль, 2008, 08:49:25 , спустя 37 минут 34 секунды
НЕ ХУЕТА! ХУЕТА!

эдво
Группа: в ухо

Карма: не нужна
Сообщений: 17633
Сила слова: 1.67

Kuzya, :)
Записан

Python, Django, Git, Emacs, Nginx, MySQL, SphinxSearch, FreeBSD/Linux
Мой блог * Кинсбург * Либург * Я на GitHub
CTAPbIu_MABP    ↓ 
22 Июль, 2008, 02:58:11 , спустя 6 часов 8 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

мавр
Группа: в ухо

Карма: не нужна
Сообщений: 5187
Сила слова: 1.81

Kuzya, чисто ради принципа сравни результаты, матч должен выдавать меньше
Записан

java.lang.OutOfMemoryError
Kuzya    ↓ 
22 Июль, 2008, 03:12:03 , спустя 13 минут 52 секунды
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 26
Сила слова: 0


Kuzya, чисто ради принципа сравни результаты, матч должен выдавать меньше
Две мессаги вверх =)
Хеее, спасибо, работает как и нужно было =)
старый запрос (с LIKE) выполняется 0.0170
с MATCH - 0,0017 =)
Записан

white-team.net
Страниц: [1] 2
Печать
 

Перейти в: