SQL запрос повесил сервер!
Добрый день!
Магазин на miniShop2: категорий около 1 000, товаров 35 000. К базе выполняются запросы, которые вызывают высокую нагрузку на сервер, что приводит в блокировке аккаунта на хостинге.
Запрос выглядел следующим образом:
SELECT `product_id` FROM `ms2_product_categories` AS `msCategoryMember` WHERE `msCategoryMember`.`category_id` IN (3143,3146,3144,… и таких перечислений около 40 000
В каком месте искать проблему?
Магазин на miniShop2: категорий около 1 000, товаров 35 000. К базе выполняются запросы, которые вызывают высокую нагрузку на сервер, что приводит в блокировке аккаунта на хостинге.
Запрос выглядел следующим образом:
SELECT `product_id` FROM `ms2_product_categories` AS `msCategoryMember` WHERE `msCategoryMember`.`category_id` IN (3143,3146,3144,… и таких перечислений около 40 000
В каком месте искать проблему?
Комментарии: 6
Что за запрос? вручную написанный или какой-то компонент его использует?
Это запрос работы компонента, видимо на стороне пользователя. Ещё стоит компонент mSearch2.
Похоже это происходит, например, в корне каталога — выбираются товары в нужных категориях (то есть во всех). Насколько я понимаю там их должно быть не 40 000, а 1000 — по числу категорий.
В каком компоненте и в каком месте искать, чтобы как-то предотвратить подобные вызовы?
Есть какие-то самописные сниппеты? Вообще по имеющимся данным трудно разобраться, я бы попробовал вывести лог и посмотреть разные страницы, чтобы найти место, где выполняется этот запрос.
Необходимо в каких-то вызовах (msProducts, mFilter2, mSearch2) ограничить выборку, вероятнее всего параметром depth или что-то подобное.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.