При загрузке главной страницы выполняется запрос, перегружающий сервер

#1 26 декабря 2013 в 10:56
Получил от хостера такое предупреждение. Что с этим делать? InsnantCMS 1.10.2 посещаемость 250ч/в сутки.

Здравствуйте!
При загрузке главной страницы на сайте выполняется запрос, перегружающий сервер:

SELECT i.*,c.title as category,
c.marker as marker,
c.zoom as zoom,
m.addr_country,
m.addr_city,
m.addr_street,
m.addr_prefix,
m.addr_house,
m.addr_room,
m.addr_phone,
m.id as addr_id
FROM cms_map_cats c,
cms_map_markers m,
cms_map_items i
WHERE m.item_id = i.id AND i.published = 1
GROUP BY i.id
ORDER BY i.rating desc
LIMIT 0, 10;

Пожалуйста, оптимизируйте данный запрос.
Если так продолжится, то мне придется заблокировать Ваш сайт.

Сам запрос медленный, кушает много CPU при выполнении. Один клик уже показывает большой перерасход.

Хочу обратить Ваше внимание на то, что данный запрос выводит 2404 (две тысячи четыреста четыре) строки, чтобы потом забрать из них первые 10 (десять).

#2 26 декабря 2013 в 16:47

Что с этим делать?

Vlad
Надеяться, что во второй ветке научатся использовать представления.
#3 26 декабря 2013 в 16:52


Что с этим делать?

Vlad
Надеяться, что во второй ветке научатся использовать представления.

stealthdebuger
То есть, это сейчас нормально?

… данный запрос выводит 2404 (две тысячи четыреста четыре) строки, чтобы потом забрать из них первые 10 (десять).

Просто я в этом ничего не понимаю. Решение — другой хостинг?
#4 26 декабря 2013 в 17:09
Vlad, я не знаю, какой именно этот компонент, но вы явно не оптимизируете базу данных!

Хочу обратить Ваше внимание на то, что данный запрос выводит 2404 (две тысячи четыреста четыре) строки, чтобы потом забрать из них первые 10 (десять).

Vlad

Зачем вам столько строк в этой таблице? Оптимизируйте её, удалите старые записи.
Так же, как вариант, можно отключить данный компонент, сделать кэширование модуля (если таковой имеется).

P.S. я так понимаю это модуль Map, который подключается к другим модулям.
#5 26 декабря 2013 в 17:37
Это компонент Instant maps и он основа сайта, на странице выводятся разные модули: новые объекты, популярные объекты, последние коментарии, витрина.

Зачем вам столько строк в этой таблице? Оптимизируйте её, удалите старые записи.
Так же, как вариант, можно отключить данный компонент, сделать кэширование модуля (если таковой имеется).

Это для меня тёмный лес. Я не знаю зачем в таблице столько строк(да что за таблица, могу только предположить), как оптимизировать тоже не понятно(это мне и хостер предлагает сделать, только как?), да и удалять вроде как не чего, посещаемость небольшая, если кто коментарий раз в неделю напишет. А что тогда делать если на сайте будет много посетителей?
#6 26 декабря 2013 в 18:21
Vlad, вся проблема в неправильности настройки модуля InstantMaps: Популярные объекты, не надо там указывать все категории, если у вас куча объектов.

Потому как логика запроса следующая:
Выбрать все объекты из списка (нет условия более 1 звезды или более 3, что сократило бы количество строк) из базы и отсортировать по рейтингу. В итоге у вас вся таблица с предприятиями выгружается.Это занимает время и процессор.

Для снижения выберите раздел самый популярный и поставить кэшировать на сутки. Врядли сильно картинка по рейтингу будет меняться за сутки при вашей посещаемости.

Надеюсь понятно объяснил)

это как искать всех жителей России, а в итоге нужен только один президент с инфой))) как думаете сколько времени потребуется.
#7 26 декабря 2013 в 20:03
Спасибо! Очень понятно. В нем у меня рейтинг раз месяц может только поменятся)
Тут сразу три вопроса(просто никогда с кешированием не сталкивался).
1, Кеширование где ставить? В модуле "популярные объекты", вкладка "Кеширование", выбрать "да" и 24 часа?
2, Нужно ли ещё где-нибудь в насторойках сайта или хостинга что-то включать?
3, Модули: новые объекты и витрину, последние статьи(все они не очень часто обновляются) тоже наверно включить кеширование?
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.