Jump to content
serg91100

Как ускорить загрузку заказа с большим количеством товаров

Recommended Posts

Posted (edited)

Добрый день. Если в заказе больше количество товаров, то скорость загрузки страницы с заказом занимает до 15 секунд. 
Товары группируются по категориям для удобства менеджеров. 

Используется VPS.
Диск 120 ГБ SSD
Объем RAM 8 ГБ
Ядра процессора 8 x 2 ГГц
Может у кого есть идеи, как ускорить его работу?
Скриншот с затертыми данными, чтобы не посчитали рекламой и файл с медленными запросами по одному заказу прикрепил.

Настройка my.cnf
 

[mysqld]
slow_query_log = 1
long_query_time = 5
slow_query_log_file = /var/log/mysql/mysql-slow.log
log-warnings=2
log-queries-not-using-indexes = 1
thread_cache_size=4                                                                                                 
query_cache_size=0
query_cache_type=0
query_cache_limit=1M
tmp_table_size=256M
max_heap_table_size=256M
character_set_server=utf8
collation-server=utf8_bin
init_connect="SET NAMES utf8 collate utf8_bin"
key_buffer=500M
join_buffer_size=256k

638fedefe0.png

mysql-slow (4).log

Edited by serg91100

Share this post


Link to post
Share on other sites

А индексы используете на FK поля?
Например:

  • в таблице "oc_order_product" на поле "order_id"
  • или в таблице "oc_order_option" на поля "order_id" и "order_product_id"

Потому что лог показывает что слишком много было строк обработано что показывает что скорее всего индексы либо отсутвуют либо не не используется базой данных:

Rows_sent: 123  Rows_examined: 479479

 

Share this post


Link to post
Share on other sites
34 минуты назад, kagan сказал:

А индексы используете на FK поля?
Например:

  • в таблице "oc_order_product" на поле "order_id"
  • или в таблице "oc_order_option" на поля "order_id" и "order_product_id"

Потому что лог показывает что слишком много было строк обработано что показывает что скорее всего индексы либо отсутвуют либо не не используется базой данных:

Rows_sent: 123  Rows_examined: 479479

 

 

Использовал компанду

SHOW INDEX FROM oc_order_product

Выдало:
c438ea5a25.thumb.png.3609c11ecaf6dd6f04dfbc9eeb17a3af.png

 

SHOW INDEX FROM oc_order_option

32ce629cbb.thumb.png.08e1e0e98bfaa6279d6ea6fb468e8708.png

И результат собственно

Share this post


Link to post
Share on other sites

Вопрос решен. Благодарю.

Share this post


Link to post
Share on other sites
On 7/22/2020 at 3:10 PM, serg91100 said:

Вопрос решен. Благодарю.

Я думаю что тип индекса должен быть не BTREE, а HASHMAP т.к. скорость поиска данных будет происходить гораздо быстрее (если быть точнее, в константное время O(1) вместо O(logN)).

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

Share this post


Link to post
Share on other sites

Этого всего мало - потому как если посмотреть в лог запросов на странице, то можно удивиться и увидеть, что cart->getProducts инцииализируется не один раз, а на странице оформления бывает и по 4!


Индексы помогают до определенного количества, а после 100-150 позиций без оптимизации самого класса cart не обойтись!

Share this post


Link to post
Share on other sites
15 часов назад, kagan сказал:

Я думаю что тип индекса должен быть не BTREE, а HASHMAP т.к. скорость поиска данных будет происходить гораздо быстрее (если быть точнее, в константное время O(1) вместо O(logN)).

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

Дамп был с ошибками. Восстановил старую базу. Все летает. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.