SQL запрос вешает mysql Исправлено

7

Пару недель что то лагало. По итогу настроил лог медленных запросов.

В нем:

FROM shop_product p
    JOIN shop_product_features pf1
        ON p.id = pf1.product_id
    JOIN shop_product_features pf2
        ON p.id = pf2.product_id
    JOIN shop_product_features pf3
        ON p.id = pf3.product_id
    JOIN shop_product_features pf4
        ON p.id = pf4.product_id
WHERE p.status = 1
    AND p.status = 1
    AND pf1.feature_id = 120 AND pf1.feature_value_id = 21766
    AND pf2.feature_id = 122 AND pf2.feature_value_id = 20219
    AND p.status = 1
    AND pf3.feature_id = 122 AND pf3.feature_value_id = 20219
    AND p.status = 1
    AND p.price >= '1000';
    AND pf4.feature_id = 120 AND pf4.feature_value_id = 21766
GROUP BY p.id
ORDER BY in_stock DESC,p.create_datetime DESC
LIMIT 24;

Дикое дублирование на котором mysql умирал. Сервер отдавал 504.

Уберем не нужные дубли и запрос начинает отлично работать.

Сообщил в сопровождение.

14 комментариев

  • +1
    Михаил Ушенин Михаил Ушенин 14 сентября 2018 09:20 #

    Проблема сохраняется, если отключить все установленные плагины для Shop-Script? Удалось определить, на какой странице витрины или бекенда выполняется такой запрос?

    • +1
      Евгений Евгений 14 сентября 2018 10:09 #

      Да. Все плагины отключал. Проблема остается. 52 секунды на запрос.

      Вид запрос после отключения всех плагинов не меняется.

    • +1
      Евгений Евгений 14 сентября 2018 10:22 #

      Да, известно на какой странице фронтенда выполняется запрос. Если сопровождение запросит данные могу дать доступ к сайту. Ссылку на полный бекап базы уже дал. Можете сами на локалке попробовать выполнить запрос.

    • +1
      Евгений Евгений 25 декабря 2018 06:19 #

      Вышла новая версия магазина. Проблема так и не решена!

      Ваш магазин продолжает своими запросами вешать mysql 

    • +1
      Евгений Евгений 25 декабря 2018 06:25 #

      Кстати очень интересно на каком основании у темы установлен флажок - исправлено!?

      Вот из slowlog.sql запрос все в том же каталоге

      SELECT DISTINCT 
      	pf5.feature_id, pf5.feature_value_id 
      FROM 
      	shop_product p
        JOIN shop_product_features pf1 ON p.id = pf1.product_id
        JOIN shop_product_features pf2 ON p.id = pf2.product_id
        JOIN shop_product_features pf3 ON p.id = pf3.product_id
        JOIN shop_product_features pf4 ON p.id = pf4.product_id
        JOIN shop_product_features pf5 ON p.id = pf5.product_id
      WHERE 
      	p.status = 1
        AND p.status = 1
        AND pf1.feature_id = 120 AND pf1.feature_value_id IN (21766)
        AND pf2.feature_id = 122 AND pf2.feature_value_id IN (20219)
        AND p.status = 1
        AND pf3.feature_id = 122 AND pf3.feature_value_id IN (20219)
        AND p.status = 1
        AND p.price >= '1000'
        AND pf4.feature_id = 120 AND pf4.feature_value_id IN (21766);
      

      Я не вижу никаких изменений в избыточности SQL кода

    • +1
      Евгений Евгений 15 января 2019 02:24 #

      4 (ЧЕТЫРЕ) месяца прошло. Ничего не решено до сих пор. Повторюсь, магазин вешает MSSQL сервер! Работать невозможно.

      • +1
        Quasar Quasar Разработчик 16 января 2019 10:40 #

        Почитайте вот эту тему, может вам будет полезно.

        Нужно создать один индекс, и по возможности переехать на другой движок таблиц (делайте на свой страх ириски). С этим уже можно будет жить. 

        Сомневаюсь, что в близжайшее время вебасист сменит дизайн БД. 

      • +1
        Евгений Евгений 16 января 2019 12:28 #

        Не помогает этот индекс.
        У меня в запросе немного другая проблема. 
        Думаю если бы программист 4 месяца получал зарплату некорректно, он бы быстро все решил.
        Косяк настолько детский что аж глаза на лоб!

      • +1
        Евгений Евгений 17 января 2019 10:46 #

        Просто прекрасный ответ от службы сопровождения: "Конкретного срока для этой задачи не установлено. Будет доработано в будущих обновлениях."

      • +1
        Андрей М. Андрей М. 20 мая 2019 17:39 #

        есть какие-либо изменения? проблема решена?

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

        • +2
          Евгений Евгений 23 мая 2019 11:37 #

          Изменений почти нет. Запрос стал почти чистый (повторы p.status = 1).

          Сервер не зависает. Но запрос выполняется неприемлемо долго. Mysql грузится на 100%

          Что делать не знаю. Сервер быстрый, памяти много, SSD

          • +1
            sitennov sitennov 4 февраля 2020 14:15 #

            Евгений, подскажите, нашли решение вопроса? 

            • +2
              Евгений Евгений 4 февраля 2020 14:48 #

              Нет. Я устал бороться с системой. Я не крутой админ. Хостинг на ihc.ru

              Сервер, KvmVps, Тариф: SSD/8 (4 CPU / 8 ГБ RAM / 50 ГБ SSD)

              Обычно запрос получения следующей страницы выполняется 1 сек. В некоторых каталогах  15-20 секунд или вываливает 504 ошибку. Почему? Я не знаю. На хостинге крутится только магазин. 

              Фильтры в магазине работают очень медленно. Без них все летает.

              Добавление новых комментариев к этой теме отключено.