ivanickii
09.04.2018 22:20
0
Добрый день. Появилась проблема с медленными запросами. На странице ничего не менялось. только добавлялся товар

2018-04-08 20:33:33 - PHP Warning: mysql_query(): MySQL server has gone away in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 22
2018-04-08 20:33:33 - PHP Warning: mysql_query(): Error reading result set's header in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 22
2018-04-08 20:33:33 - PHP Notice: Error: MySQL server has gone away<br />Error No: 2006<br />
SELECT
                                `a`.`attribute_id`,
                                REPLACE(REPLACE(TRIM(pa.text), '
'
, ''), '
'
, '')AS`txt`,
                                `ad`.`name`,
                                `agd`.`name`AS`gname`,
                                `agd`.`attribute_group_id`
                        FROM
                                `oc_product`AS`p`
                        INNERJOIN
                                `oc_product_to_store`AS`pts`
                        ON
                                `p`.`product_id` = `pts`.`product_id`AND`pts`.`store_id` = 0
                        INNERJOIN
                                `oc_product_attribute`AS`pa`
                        ON
                                `p`.`product_id` = `pa`.`product_id`AND`pa`.`language_id` = 4
                        INNERJOIN
                                `oc_attribute`AS`a`
                        ON
                                `a`.`attribute_id` = `pa`.`attribute_id`
                        INNERJOIN
                                `oc_attribute_description`AS`ad`
                        ON
                                `ad`.`attribute_id` = `a`.`attribute_id`AND`ad`.`language_id` = 4
                        INNERJOIN
                                `oc_attribute_group`AS`ag`
                        ON
                                `ag`.`attribute_group_id` = `a`.`attribute_group_id`
                        INNERJOIN
                                `oc_attribute_group_description`AS`agd`
                        ON
                                `agd`.`attribute_group_id` = `ag`.`attribute_group_id`AND`agd`.`language_id` = 4
                       
                        WHERE
                                `p`.`date_available` <= NOW()AND`p`.`status` = '1'
                        GROUPBY
                                `txt`, `pa`.`attribute_id`
                        HAVING
                                `txt` != ''
                        ORDERBY
                                `txt`

in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 50
2018-04-08 22:03:45 - PHP Warning: mysql_query(): MySQL server has gone away in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 22
2018-04-08 22:03:45 - PHP Warning: mysql_query(): Error reading result set's header in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 22
2018-04-08 22:03:45 - PHP Notice: Error: MySQL server has gone away<br />Error No: 2006<br />
SELECT
                                `a`.`attribute_id`,
                                REPLACE(REPLACE(TRIM(pa.text), '
'
, ''), '
'
, '')AS`txt`,
                                `ad`.`name`,
                                `agd`.`name`AS`gname`,
                                `agd`.`attribute_group_id`
                        FROM
                                `oc_product`AS`p`
                        INNERJOIN
                                `oc_product_to_store`AS`pts`
                        ON
                                `p`.`product_id` = `pts`.`product_id`AND`pts`.`store_id` = 0
                        INNERJOIN
                                `oc_product_attribute`AS`pa`
                        ON
                                `p`.`product_id` = `pa`.`product_id`AND`pa`.`language_id` = 4
                        INNERJOIN
                                `oc_attribute`AS`a`
                        ON
                                `a`.`attribute_id` = `pa`.`attribute_id`
                        INNERJOIN
                                `oc_attribute_description`AS`ad`
                        ON
                                `ad`.`attribute_id` = `a`.`attribute_id`AND`ad`.`language_id` = 4
                        INNERJOIN
                                `oc_attribute_group`AS`ag`
                        ON
                                `ag`.`attribute_group_id` = `a`.`attribute_group_id`
                        INNERJOIN
                                `oc_attribute_group_description`AS`agd`
                        ON
                                `agd`.`attribute_group_id` = `ag`.`attribute_group_id`AND`agd`.`language_id` = 4
                       
                        WHERE
                                `p`.`date_available` <= NOW()AND`p`.`status` = '1'
                        GROUPBY
                                `txt`, `pa`.`attribute_id`
                        HAVING
                                `txt` != ''
                        ORDERBY
                                `txt`

in /home/smarttun/smart-tuning.com.ua/www/system/database/mysql.php on line 50

В программировании не понимаю ищу исполнителя который за оплату исправит эту ошибку.
rudenko
10.04.2018 11:28
3
Берете SQL запрос, который в ошибке выводится, ставите перед ним слово EXPLAIN, выполняете в phpMyAdmin получаете информацию:
cdn.adm.tools/forum_message/0451/51/image_3287283_dc9dbea38857a4d9bfc7eade0493843b.png

В результате видим, что для некоторых таблиц не используются индексы плюс грубо происходит сканирование 320 млн комбинаций: 8 * 28177 * 1420
Это нередкая проблема ряда CMS с электронными магазинами, когда их устанавливаешь все работает шикарно, а когда наполняешь товарами все неоптимизированные SQL запросы вырастают в невыполнимых монстров.

Решение - пробовать устанавливать разные индексы (самое простое), разбивать запросы на несколько.
Решить проблему не смогу, но информация будет полезна тому, кто возметься исправлять ошибку.
Diacar_ukraine
19.04.2018 13:48
0
У меня аналогичная проблема. Вы решили ее у себя? Помогите советом и мне. Спасибо!
ivanickii
20.04.2018 22:27
0
Нет я ее не решил, на www.opencartforum.com есть пользователь snastik который занимается такими проблемами.
Тема закрыта.