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

38 тыс товаров загрузил, сайт еле ползает


Recommended Posts

Сконвертироть систему храния БД MySQL из MyISAM в InnoDB

Добавить индексы для всех внешних ключей

если opencart 2.3 можно врубить штатный мемкэш (у хостинга бегет как отдельная услуга очень даже хорошая)

 

прирост будет ощутимый (на практике с 20к товарами было все норм)

 

// ещё не забывать про нормальный хостинг с достаточным кол-вом ресурсов.

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


5 минут назад, ardashev06 сказал:

Сконвертироть систему храния БД MySQL из MyISAM в InnoDB

Это ничего не даст.

 

5 минут назад, ardashev06 сказал:

Добавить индексы для всех внешних ключей

ОК не использует внешние ключи.

Но индексы проверить таки надо, только не на несуществующих внешних ключах, а на полях, которые используются для джоинов и фильтрации выборок.

 

А ещё отключить подсчёт товаров в категориях и убедиться, что нет модулей с кривой логикой.

 

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


38 минут назад, SFS77 сказал:

Существует решение проблемы с быстродействием?

вот

 

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


  1. Отключить подсчет товаров
  2. оптимизировать БД
  3. оптимизировать медленные запросы
  4. исправить ошибку
  5. поставить кешивроание

 

 

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


1 час назад, bitrixlviv сказал:
  1. Отключить подсчет товаров
  2. оптимизировать БД
  3. оптимизировать медленные запросы
  4. исправить ошибку
  5. поставить кешивроание

 

6. Поставить тему по умолчанию (я серьезно. Когда делается нагруженный проект, берется тема по умолчанию и переверстывается, чтобы не сделать из своего магазина г...фарш кода различных г.. модулей темы)
7. Снести все модули  "текущей" темы (проще заново развернуть чистый opencart)
8. С индексами аккуратнее, лишние индексы могут "запутать" оптимизатор MySQL и он может по ошибке использовать не те индексы в запросе,  можно словить тормоза и потом долго искать "почему"

:)

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

2 минуты назад, SFS77 сказал:

Если кто-то то готов решить проблему - пишите в личку.

Сайт на vds.

У меня расценки те же  :)

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

7 минут назад, markimax сказал:

У меня расценки те же  :)

а чего в услуги не воткнёшь?

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


22 минуты назад, markimax сказал:

 

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

 

@SFS77 точно, например этот )
https://opencartforum.com/files/file/3126-next-default-3/

Потом ещё с такой кучей товаров нужно как то грамотно подпихивать чтобы в минуса не уйти например вот этим ))

 

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


Просто для образования. Что дадут внешние ключи? В чем сакральный смысл их использования с точки зрения производительности запросов. Я их использую в качестве ссылочной целосности БД, но никаким образом к производительности они не относятся. Или я не прав?

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


офтоп

 

 

А это и есть их основная задача - целостность

Но наличие индекса не помешает..

пример

Все заказы от двух известных покупателей, с инфой о покупателях


SELECT * FROM `order` o JOIN customer c ON o.customer_id=c customer_id AND c.customer_id IN (5,6)


Но в ОС таких возможных запросов не очень много

 

 

 

 

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

6 минут назад, chukcha сказал:

Но наличие индекса не помешает..

пример

Все заказы от двух известных покупателей, с инфой о покупателях


SELECT * FROM `order` o JOIN customer c ON o.customer_id=c customer_id AND c.customer_id IN (5,6)


Но в ОС таких возможных запросов не очень много

 

 

Если заказов много и пользователей тоже от похожего реального запроса (чуть посложнее особенно с Group) сервер может "лечь"
Джойниться будет вся таблица ко всей таблице, в выдаче там где не будет выполнено условия джойна будет NULL и выборка будет большой
И по индексам будет filesort
Здесь надо Where c.customer_id IN (5,6) - тогда будут выводиться только для этих двух, и запрос будет быстрым так как выборка минимальна и будут использоваться индексы "правильно"
Лучше условий в Join не использовать
Но иногда без этого никуда :(
 

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

А где вы увидели что будет джойниться по всей таблице?

 

Ну.. я ту соглашусь, что запрос выглядит не совсем корректным

 

В стиле оракла это так

SELECT * FROM `order` o, customer c

WHERE o.customer_id=c customer_id

AND c.customer_id IN (5,6)

 



 

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

7 минут назад, chukcha сказал:

А где вы увидели что будет джойниться по всей таблице?

 

 

Да сорри, не заметил что это просто JOIN, а при LEFT JOIN -е "этот" запрос положил сервер мне на 10k заказах :)
 

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

11 минут назад, SFS77 сказал:

Отключил счётчик товаров, стало получше, но всё равное ненормально

Так ... забудьте про Page Speed - это рекомендательный попугаеметр, не более
Он не измеряет скорость как таковую
Это сервис "помощи" в юзабилити
Скорость измеряют по TTFB через инспектор кода браузера

 

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

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

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

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

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

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

Вхід

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

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

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

Important Information

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