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

6

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

В нем:

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.

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

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

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

  • +1
    Михаил Ушенин Михаил Ушенин Webasyst 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Добавить комментарий

          Чтобы добавить комментарий, зарегистрируйтесь или войдите