Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Потрібна оптимізація повільних запитів БД, сайт висить. Хто може підскаже, або готовий адекватно вирішити питання.


Recommended Posts

SELECT
  p.product_id,
  p.quantity > 0 as instock,
  (
    SELECT
      AVG(rating) AS total
    FROM
      oc_review r1
    WHERE
      r1.product_id = p.product_id
      AND r1.status = '1'
    GROUP BY
      r1.product_id
  ) AS rating,
  (
    SELECT
      price
    FROM
      oc_product_discount pd2
    WHERE
      pd2.product_id = p.product_id
      AND pd2.customer_group_id = '1'
      AND pd2.quantity = '1'
      AND (
        (
          pd2.date_start = '0000-00-00'
          OR pd2.date_start < NOW()
        )
        AND (
          pd2.date_end = '0000-00-00'
          OR pd2.date_end > NOW()
        )
      )
    ORDER BY
      pd2.priority ASC,
      pd2.price ASC
    LIMIT
      1
  ) AS discount,
  (
    SELECT
      price
    FROM
      oc_product_special ps
    WHERE
      ps.product_id = p.product_id
      AND ps.customer_group_id = '1'
      AND (
        (
          ps.date_start = '0000-00-00'
          OR ps.date_start < NOW()
        )
        AND (
          ps.date_end = '0000-00-00'
          OR ps.date_end > NOW()
        )
      )
    ORDER BY
      ps.priority ASC,
      ps.price ASC
    LIMIT
      1
  ) AS special
FROM
  oc_product p
  LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id)
  LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id)
WHERE
  pd.language_id = '1'
  AND p.status = '1'
  AND p.date_available <= NOW()
  AND p2s.store_id = '0'
GROUP BY
  p.product_id
ORDER BY
  instock DESC,
  p.date_added DESC,
  LCASE(pd.name) DESC
LIMIT
  0, 12

photo_2024-01-01_23-58-40.thumb.jpg.712b0bafaffbcb3ce57a72952eb48005.jpg

Приклад найповільнішого запиту.

Надіслати
Поділитися на інших сайтах


02.01.2024 в 20:31, AlexeyN сказал:
SELECT
  p.product_id,
  p.quantity > 0 as instock,
  (
    SELECT
      AVG(rating) AS total
    FROM
      oc_review r1
    WHERE
      r1.product_id = p.product_id
      AND r1.status = '1'
    GROUP BY
      r1.product_id
  ) AS rating,
  (
    SELECT
      price
    FROM
      oc_product_discount pd2
    WHERE
      pd2.product_id = p.product_id
      AND pd2.customer_group_id = '1'
      AND pd2.quantity = '1'
      AND (
        (
          pd2.date_start = '0000-00-00'
          OR pd2.date_start < NOW()
        )
        AND (
          pd2.date_end = '0000-00-00'
          OR pd2.date_end > NOW()
        )
      )
    ORDER BY
      pd2.priority ASC,
      pd2.price ASC
    LIMIT
      1
  ) AS discount,
  (
    SELECT
      price
    FROM
      oc_product_special ps
    WHERE
      ps.product_id = p.product_id
      AND ps.customer_group_id = '1'
      AND (
        (
          ps.date_start = '0000-00-00'
          OR ps.date_start < NOW()
        )
        AND (
          ps.date_end = '0000-00-00'
          OR ps.date_end > NOW()
        )
      )
    ORDER BY
      ps.priority ASC,
      ps.price ASC
    LIMIT
      1
  ) AS special
FROM
  oc_product p
  LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id)
  LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id)
WHERE
  pd.language_id = '1'
  AND p.status = '1'
  AND p.date_available <= NOW()
  AND p2s.store_id = '0'
GROUP BY
  p.product_id
ORDER BY
  instock DESC,
  p.date_added DESC,
  LCASE(pd.name) DESC
LIMIT
  0, 12

photo_2024-01-01_23-58-40.thumb.jpg.712b0bafaffbcb3ce57a72952eb48005.jpg

Приклад найповільнішого запиту.

 

Вот это 

 

instock DESC,

 

и это

 

instock DESC,

В понимании "оптимизация запроса" обывателя не оптимизируется.

 

Товаров у вас судя по всему много. А у Ukraine очень зажатые лимиты на ресурсы под mysql в дешевых пакетах.

Так что вам путь на нормальный сервер с нормальным конфигом базы и достаточными ресурсами вычислений подобных приколов "на лету". 

Надіслати
Поділитися на інших сайтах


02.01.2024 в 22:27, Yoda сказал:

 

Вот это 

 

instock DESC,

 

и это

 

instock DESC,

В понимании "оптимизация запроса" обывателя не оптимизируется.

 

Товаров у вас судя по всему много. А у Ukraine очень зажатые лимиты на ресурсы под mysql в дешевых пакетах.

Так что вам путь на нормальный сервер с нормальным конфигом базы и достаточными ресурсами вычислений подобных приколов "на лету". 

Да, вы правы. В дешевых пакетах хостинга это на лету не сделать - необходимы нормальные ресурсы. Тут или кешировать такие запросы, и при обновлении остатков, заказе таких товаров, по истечении времени обновлять кеш или брать нормальные ресурсы и настраивать сервер. Так как зашло 5 пользователей посмотрели эти "популярные, акции, хиты продаж" и база ушла на покурить, подумать о жизни.

Надіслати
Поділитися на інших сайтах


вроде норм тариф, товаров тоже почистил, старых нулевых, отключил последние на главное - главная залетала. Теперь основная проблема - это поиск, он просто висит.. Поиск штатный, иногда категории подвисают, вот товарная страница тоже грузится норм. Подскажите еще умных мыслей, уже благодаря вам дело двинулось хоть)

image.png.f1c8001d5b6b1819c1a84b195a0d7971.png

Надіслати
Поділитися на інших сайтах


03.01.2024 в 00:59, AlexeyN сказал:

вроде норм тариф, товаров тоже почистил, старых нулевых, отключил последние на главное - главная залетала. Теперь основная проблема - это поиск, он просто висит.. Поиск штатный, иногда категории подвисают, вот товарная страница тоже грузится норм. Подскажите еще умных мыслей, уже благодаря вам дело двинулось хоть)

image.png.f1c8001d5b6b1819c1a84b195a0d7971.png

Это не норм. За эти деньги можно тащить нормальный VPS. А не колхоз-шаред.

Надіслати
Поділитися на інших сайтах


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

И это уже vps, с которым надо иметь хоть какой-то опыт администрирования. Присматривать нужно за ним. Если своих знаний нет и нет человека кто будет заниматься, а придется по каждой мелочи искать фрилансеров... доступы раздавать кому-попало... это будет бред.

 

И если на то пошло, то вот:

https://contabo.com/en/

Тоже 8гб памяти, но 4 ядра (хоть и не выделенных) за в 3 раза меньше денег.

 

Но все это глобально ерунда полная... :) Чтоб сайт нормально работал нужен высокочастотный процессор. На vps почти всегда многоядерные, но медленные cpu.

Потому лучше или shared на таком (частотой по-выше и не сильно древнем желательно), но не перегруженном соседями и без конских лимитов. Либо уже полноценный собственный выделенный

https://oneprovider.com/dedicated-servers/paris-france

Змінено користувачем NotSlow
Надіслати
Поділитися на інших сайтах


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

Все ж потрібно вирішити проблему з сайтом спочатку, бо проблема не з хостингом. Видалив половину непотрібних товарів старих, виклчив пару непотрібних відображень останніх товарів. Тепер головна і товари літають. Тільки категорії з великою кількістю тормозять та пошук висить. Явно проблем з виборкою товарів, може індекси якісь допоможуть чи шось такого плану. Но по відчуттям, проблема, вже в 3 рази менше виглядає, всім дякує за натхнення)) Давайде доб'ємо))

Надіслати
Поділитися на інших сайтах


On 1/3/2024 at 1:11 PM, NotSlow said:

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

 

Ой, та я вас умоляю. Экономить на пинге между Киевом и Таллином или Германией при наличии куда более существенных задержек необработанного напильником опенкарта - ну такое...

Надіслати
Поділитися на інших сайтах


03.01.2024 в 14:21, AlexeyN сказал:

проблема не з хостингом

Ну если вы правда считаете, что 1 ядро (неизвестно кстати какого процессора) без проблем держит ОС, веб-сервер с php, mysql базы... и кто знает что там еще есть. И плюс на это все суммарно есть 2гб памяти. Тогда конечно да :)

В те моменты когда поиск "висит" наверняка же и весь сайт висит, т.к. ваше единственное ядро процессора полностью занято mysql запросом

Змінено користувачем NotSlow
Надіслати
Поділитися на інших сайтах


On 1/3/2024 at 1:39 PM, NotSlow said:

Ну если вы правда считаете, что 1 ядро (неизвестно кстати какого процессора) без проблем держит ОС, веб-сервер с php, mysql базы... и кто знает что там еще есть. И плюс на это все суммарно есть 2гб памяти. Тогда конечно да :)

В те моменты когда поиск "висит" наверняка же и весь сайт висит, т.к. ваше единственное ядро процессора полностью занято mysql запросом

та я особо не считаю много, сейчас понимаю, что хостинг тоже слаб, не сильно в теме этих вопросов был, особенно последнее время, уверен, что вы правы

Надіслати
Поділитися на інших сайтах


В 03.01.2024 в 13:11, NotSlow сказав:

И если на то пошло, то вот:

https://contabo.com/en/

Тоже 8гб памяти, но 4 ядра (хоть и не выделенных) за в 3 раза меньше денег.

 

Contabo Cloud VPS - це не VPS. Це не повноцінний VPS. Це шаред хостинг з іграми в root-права.

Надіслати
Поділитися на інших сайтах

Взагалі то, а скільки у вас одночасно на сайті користувачів? Скільки користувачів за день? Як часто ви оновлюєте товари та залишки?

Бо можливо вам треба якісний сервер вже, а не бавитися сірниками, а можливо у вас треба кодову базу перевіряти та саму базу даних, а можливо треба обидва варіанти. 

Для великої вантажної машини замалий гараж у дворі, як ворота не намагайся відкрити, а для велосипеда здоровенний ангар не треба. 

Бо всі дають добрі поради, але спочатку треба розібратися у початкових даних.

Якщо треба вам - то налаштування гарного пошуку та серверу Yoda вміє робити. 

Надіслати
Поділитися на інших сайтах


On 1/3/2024 at 5:21 PM, niger said:

Взагалі то, а скільки у вас одночасно на сайті користувачів? Скільки користувачів за день? Як часто ви оновлюєте товари та залишки?

Бо можливо вам треба якісний сервер вже, а не бавитися сірниками, а можливо у вас треба кодову базу перевіряти та саму базу даних, а можливо треба обидва варіанти. 

Для великої вантажної машини замалий гараж у дворі, як ворота не намагайся відкрити, а для велосипеда здоровенний ангар не треба. 

Бо всі дають добрі поради, але спочатку треба розібратися у початкових даних.

Якщо треба вам - то налаштування гарного пошуку та серверу Yoda вміє робити. 

так, вірно, В мене до 30 тис товарів, вже 40 видалив старих, шаблон Moneymaker2, модулів взагалі небагато всяких наче, тобто оптимізація повинна все вирішити + кеширування правильне, як я розумію, хоча може я і не правий

Надіслати
Поділитися на інших сайтах


03.01.2024 в 17:40, AlexeyN сказал:

так, вірно, В мене до 30 тис товарів, вже 40 видалив старих, шаблон Moneymaker2, модулів взагалі небагато всяких наче, тобто оптимізація повинна все вирішити + кеширування правильне, як я розумію, хоча може я і не правий

Вам шашечки или ехать?

Вот вы когда зубы ремонтируете, тоже философствуете о том стоит ли открывать рот. Или какого диаметра буром делать дырки?

 

Вы пришли с конкретным вопросом. Про запрос. Получили конкретный ответ и несколько вариантов решения.

 

Теперь вопрос стоит про тормоза магазина в целом. Причин которые создают такие проблемы - сотни. От балансировки хостинга, который может ограничивать ресурсы иззан наплыва ботов, вызванного некорректной настройкой robots.txt. До каких-нибудь генитальных скриптов от супер специалистов, которые убирают создание кешей изображений.

 

Для нормальной диагностики проблем магазина надо:

А) видеть логи

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

В) Заранее исключить базовые проблемы, опять же начиная с проверки robots.txr заканчивая коррекцией базы данных и конфигурацией сервера базы данных.

 

Если хотя бы в чем-то из этих позиций есть понимание. Я могу рассказать дальше. Очень долго.

Надіслати
Поділитися на інших сайтах


On 1/3/2024 at 7:12 PM, Yoda said:

Вам шашечки или ехать?

Вот вы когда зубы ремонтируете, тоже философствуете о том стоит ли открывать рот. Или какого диаметра буром делать дырки?

 

Вы пришли с конкретным вопросом. Про запрос. Получили конкретный ответ и несколько вариантов решения.

 

Теперь вопрос стоит про тормоза магазина в целом. Причин которые создают такие проблемы - сотни. От балансировки хостинга, который может ограничивать ресурсы иззан наплыва ботов, вызванного некорректной настройкой robots.txt. До каких-нибудь генитальных скриптов от супер специалистов, которые убирают создание кешей изображений.

 

Для нормальной диагностики проблем магазина надо:

А) видеть логи

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

В) Заранее исключить базовые проблемы, опять же начиная с проверки robots.txr заканчивая коррекцией базы данных и конфигурацией сервера базы данных.

 

Если хотя бы в чем-то из этих позиций есть понимание. Я могу рассказать дальше. Очень долго.

сразу видно, мастер пришел)) Остался только один вопрос, сколько почек продавать, чтобы ваше величество снизошло до решения данного необъятного вопроса?)) Ладно, если без шуток, что вы можете предложить и сколько это стоит?))

Надіслати
Поділитися на інших сайтах


Что мы видим в плане запроса? fullscan

1714468057_.thumb.png.44382a44c2db62d0c3a384d8fce63925.png


наличие ORDER BY   instock или же p.quantity > 0 as instock
повлияет НО не очень

 

и это всего лишь!!! ~40к товаров

 

 

Надіслати
Поділитися на інших сайтах

03.01.2024 в 20:30, AlexeyN сказал:

Ладно, если без шуток, что вы можете предложить и сколько это стоит?))

 

 

  • +1 1
Надіслати
Поділитися на інших сайтах

03.01.2024 в 22:16, AlexeyN сказал:

ого, ще й безкоштовно, виглядаю як ідеальний план, хтось зараз користується, все добре? дякую

$85 його вартість. це тест на 7 днів безкоштовно.

Я не користувався. Там є така штука, якщо сервер розробника не працює, довго думає - то і ваш сайт також. А це для мене привід пройти повз такого рішення. Було ще багато баталій стосовно його архітектури здається, та як і що він робе. Багато хто його не полюбляє із розробників на цьому форумі. Але продажі є, тому хтось користується. 

  • +1 1
Надіслати
Поділитися на інших сайтах


On 1/3/2024 at 11:32 PM, niger said:

$85 його вартість. це тест на 7 днів безкоштовно.

Я не користувався. Там є така штука, якщо сервер розробника не працює, довго думає - то і ваш сайт також. А це для мене привід пройти повз такого рішення. Було ще багато баталій стосовно його архітектури здається, та як і що він робе. Багато хто його не полюбляє із розробників на цьому форумі. Але продажі є, тому хтось користується. 

зрозумів, дякую, значить JetCash 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.