Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Хотел сделать самый быстрый в мире сайт) Но что-то не успел отплыть от гавани он начал тонуть... Не могу понять пока причину тормозов, работало всё очень шустро и я уже начал думать, что ещё чуть чуть и все перейдут с гугула на мои сайт-поиск.. Потом резко в один момент поиск стал "залипать" хотя в БД не так и много записей для тестирования.. около 100 тыс. Задержка 1-1.5 секунды примерно чисто если в браузере смотреть. В общем очень заметно особенно, если не кэшированные страницы. Я думаю там могут быть 3 причины тормозов 1) Нужно оптимизировать БД (сейчас она весит около 40мб (по-моему это совсем мало для того чтоб БД тормозило)) 2) Ошибки в JS скриптах, ajax и прочее 3) PHP - тормозные SQL запросы и тд. Что вы на счёт этого скажите, где по вашему собака зарыта?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 13:59 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Проиндексируйте таблицы, особенно те поля к которым идёт запрос поиска и попробуйте, просто при поисковых запросах идёт анализ всей таблицы он ищет совпадение везде, а при индексе он будет проверять сначала их. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 14:04 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Sanjar88Проиндексируйте таблицы, особенно те поля к которым идёт запрос поиска и попробуйте, просто при поисковых запросах идёт анализ всей таблицы он ищет совпадение везде, а при индексе он будет проверять сначала их. Я сделал индексы, даже эксплейном каждый запрос проверял.. Вроде бы всё норм было. Хотя у меня есть LEFT JOIN-ы таблиц. И не тормозило примерно тогда, когда БД весила примерно 5-10 мб. Может 40мб это очень много инфы для поиска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 14:09 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Goror, 1) и 3) еще смотря как и что искать. индексы не всегда будут использоваться. если поиск полнотекстовый. то и индекс нужно создавать специальный. в общем приведите примеры структур таблиц, данных. как и что ищите. тогда можно будет сказать где можно ускорить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 14:11 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
r uGoror, 1) и 3) еще смотря как и что искать. индексы не всегда будут использоваться. если поиск полнотекстовый. то и индекс нужно создавать специальный. в общем приведите примеры структур таблиц, данных. как и что ищите. тогда можно будет сказать где можно ускорить Понятно! Нет, полнотекстовый поиск я пока не использовал (его планировал для длинных фраз-запросов в конце подключать после 3-4 слов) Сейчас пока чисто с "LIKE%", "LIKE" по ключ-значение и тд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 14:37 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Gororr uGoror, 1) и 3) еще смотря как и что искать. индексы не всегда будут использоваться. если поиск полнотекстовый. то и индекс нужно создавать специальный. в общем приведите примеры структур таблиц, данных. как и что ищите. тогда можно будет сказать где можно ускорить Понятно! Нет, полнотекстовый поиск я пока не использовал (его планировал для длинных фраз-запросов в конце подключать после 3-4 слов) Сейчас пока чисто с "LIKE%", "LIKE" по ключ-значение и тд. Пример запроса с LIKE кинь. Не все LIKE запросы используют индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 14:45 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Програмёр Не все LIKE запросы используют индексы. Это да, но я специально их эксплейн запросами проверял, чтоб все они использвоали индексы.. Вот один из основных запросов: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 15:02 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
GororПрограмёр Не все LIKE запросы используют индексы. Это да, но я специально их эксплейн запросами проверял, чтоб все они использвоали индексы.. Вот один из основных запросов: Код: sql 1. 2. 3. 4. 5. 6. 7. Ну и при каком количестве записей на выходе начинает тормозить? (я имею ввиду сколько записей должно попасть в выборку, что бы начались тормоза?) 1. Один из JOIN может неверно подобрать индекс, а потому по одной таблице пойдёт full scan 2. индексируется ли поле sb.rate? Если нет, то на выходе получаем file sort. )) И запрос в разы медленнее. Для проверки что глючит, надо выполнить один из тормозных запросов вручную. Если затормозит запрос - искать проблему в mysql, если нет - в php или чём либо другом. Если данная выборка отдаст 100000 записей, поверьте, Ваш скрипт просто ляжет... и очень даже на долго (может секунд на 20 повиснуть), так как в самом запросе я не вижу limit, то предполагаю, что описанная ситуация возможна. Да и вообще на стороне mysql клиента (в данном случае это я про php) может много чего быть... Чуть меньше возможно на js, но всё же напоследок и его стоит проверить. Тем более, очень интересно, где лежит основная логика. на сервере (php) или клиенте (js)? P.S. С гугла на Ваш сайт никто не переплывёт. Уж поверьте, до их "находимости", быстродействия и стабильности добраться не так уж и просто. Вот например вижу, что Вы переменные прямо в запрос закидываете... это так? Если да, и при этом не используется экранирование данных, то Вашу базу поломать и получить всё что хочется (или записать всё что угодно) можно на счёт раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 15:36 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
ПрограмёрЕсли данная выборка отдаст 100000 записей, поверьте, Ваш скрипт просто ляжет... и очень даже на долго (может секунд на 20 повиснуть), так как в самом запросе я не вижу limit, то предполагаю, что описанная ситуация возможна. Лимиты у меня стоят тут: $result = mysql_query("$sql LIMIT $start, $num"); Програмёр1. Один из JOIN может неверно подобрать индекс, а потому по одной таблице пойдёт full scan Это пока не проверял.. ПрограмёрВот например вижу, что Вы переменные прямо в запрос закидываете... это так? ю...и при этом не используется экранирование данных... Верно подметили, да я пока убрал экранирование и тд, чтоб легче было смотреть код, а то очень длинные строки выходят, на экран всё не помещается и тд)) Програмёргде лежит основная логика. на сервере (php) или клиенте (js) На сервере в основном, на JS скорее лёгкая коррекция данных, хотя бывает от этого много зависит, для быстродействия и тд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 16:01 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
херовый поиск как пример http://zhivika.ru/ логика - найти можно по любой части (по любым 2 частям) названия, необязательно совпадающей с началом слова(слов) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 16:16 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
вадяхеровый поиск как пример http://zhivika.ru/ логика - найти можно по любой части (по любым 2 частям) названия, необязательно совпадающей с началом слова(слов) Честно сказать я не понял, вы этот сайт как "Хороший" пример привели или как "Херовый"?!) Мне лично поиск на нём не очень понравился, "живой" поиск ведёт себя странно.. При вводе слова: Таб, (начало от Таблетки) 1) первым пунктом вывело Таблетки от кашля... , а потом пошло что-то непонятное, типа: 2) Цитрамон п таб №34534 3) Ля ля ля тра ляля таб.... ля ля ля А основной поиск дал такой результат: Результаты поиска по запросу "таб" 1) Нейролептики 2) Язва 3) Предметы ухода за больными и тд. Так и должно быть по задумке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 17:58 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Goror, искать начиная с "таблетки" наверно не верно, потому как слово таблетки может встречаться в половине названий и может быть как в в начале названия, так и в середине. информативнее искать по самой информативной части названия. я написал - как пример не плохого поиска. но он тоже имеет недостатки. я уже в начале "нулевых" предложил оптимальный поиск. основанный на распарсивании введенное xxx zzz в like %xxx% and like %zzz% число введенных блоков может быть произвольным причем дожно быть ограничение на вывод limit 10 (но не более 15) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 18:39 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Для разминки попробуйте начать писать медленные sql в лог лог Потом есть смысл посмотреть что в результате Ну а если выясните что база не виновна то xdebug и профилирование вам в помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 18:54 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
вадяGoror, искать начиная с "таблетки" наверно не верно, потому как слово таблетки может встречаться в половине названий и может быть как в в начале названия, так и в середине. информативнее искать по самой информативной части названия. я написал - как пример не плохого поиска. но он тоже имеет недостатки. я уже в начале "нулевых" предложил оптимальный поиск. основанный на распарсивании введенное xxx zzz в like %xxx% and like %zzz% число введенных блоков может быть произвольным причем дожно быть ограничение на вывод limit 10 (но не более 15) Ну в целом обычный сайт с обычным поиском, как говориться без претензий на призовые места) На счёт разбивки на слова like %xxx% and like %zzz% я как ни странно тоже пробовал такой вариант, он у меня по сути тоже участвует в скрипте, но в последнее время я мало на него обращаю внимания, потому что мне больше нравиться "точные" попадания с 2-3 символов, а так да, конечно это сложная тема, хотя и кажется довольно простой, но там много комбинаций и нужно их все рассматривать очень детально и как говориться нужно чувствовать) вадяя уже в начале "нулевых" предложил оптимальный поиск. Я примерно с 2005 года периодически занимаюсь web-сайтами, хотя в начале в основном с Flash работал, это вот сейчас, последние месяцы активно занялся "поиском", php, sql, js и тд. Как-то что-то потянуло и не хочу бросить на пол пути) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:01 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
посоветуйте наконец Сфинкс человеку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:03 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
ScareCrow, ваистену так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:05 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
ScareCrowпосоветуйте наконец Сфинкс человеку. Готовые решения не для меня) Я давно тестировал Сфинкс, но он как монолит, там ничего не изменишь под свои нужды и тд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:05 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Goror, а что вам не хватает в сфинксе... просто любопытно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:08 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
whitediverGoror, а что вам не хватает в сфинксе... просто любопытно Сложно контролировать его работу, мне нужна немецкая овчарка, которую я буду натравливать на сайты и она мне будет приносить то, что мне нужно, а не без контрольный крокодил, который пожирает всё подряд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:11 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
Goror, минутку так вы ищете не в локальной базе а каждый раз перебираете сайты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:19 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
whitediverGoror, минутку так вы ищете не в локальной базе а каждый раз перебираете сайты? Ну да, сканирую сайты, но не часто, через крон, примерно раз в 2-3 дня) И если есть изменения и тд. А так лишний раз не трогаю.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:24 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
whitediverGoror, минутку так вы ищете не в локальной базе а каждый раз перебираете сайты? Точней не так, ищу конечно в локальной БД, но информацию для этой БД собираю с внешних источников. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 19:34 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
GororПрограмёр Не все LIKE запросы используют индексы. Это да, но я специально их эксплейн запросами проверял, чтоб все они использвоали индексы.. Вот один из основных запросов: Код: sql 1. 2. 3. 4. 5. 6. 7. Вот этот кусок условия вообще не нужен Код: sql 1. проверьте индексы. sl.content какой тип в базе имеет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 20:58 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
рубист Вот этот кусок условия вообще не нужен Код: sql 1. Кстати да, эти OR $key и $parent-ы притормаживают, особенно если $key или $parent пусты, сейчас проверил, с ними примерно ~2 секунды запрос, без них 0.0041 p.s Нужно будет ещё полазить по SQL запросам, я кое что в них добавлял без тестирования и тд. Может потому где-то стоп кран вместо дверной ручки дёрнул.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2014, 21:54 |
|
||
|
[PHP] Поиск по БД (стал очень медленный)
|
|||
|---|---|---|---|
|
#18+
думаеться мне автор не решит сдесь свою главную проблему - сделать самый быстрый поиск на планете :) ЗЫ ещо обратить надо внимание, что возможно тормоза были всегда. просто раньше в кеши влазили индексы, и данных было мало и запросы тестовые однотипные...и база очень хорошо использовала кешированые данные. а когда обьём стал большим, оно в кеши не влазит всё, и сразу тормоза всплыли на поверхность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2014, 11:18 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38648022&tid=1462764]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 426ms |

| 0 / 0 |
