Tw333k Опубликовано 26 февраля, 2015 Жалоба Поделиться Опубликовано 26 февраля, 2015 Здравствуйте. Есть парочку интернет-магазинов, которые размещаются на одном хостинге, но на разных заказах. Так вот один из них генерируют уж слишком большую нагрузку на базу данных. При этом фильтров, свойств и тп на сайте нету. Хостер прислал логи, но я в них к сожалению ничего не понимаю, кто может подсказать? Andrew Bratanchuk Добавлено: 24.02.2015 12:14 Здравствуйте. Нагрузку создают запросы к Вашей базе данных p296100_tehnovse. Лог медленных запросов прилагаю ниже: # Query 1: 0.00 QPS, 0.04x concurrency, ID 0x15EAC4F3BFCF64C6 at byte 1500182241 # This item is included in the report because it matches --limit. # Scores: V/M = 1.00 # Time range: 2015-02-22 04:03:49 to 2015-02-23 03:53:29 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 0 109 # Exec time 7 3219s 26s 50s 30s 40s 5s 26s # Lock time 0 1s 175us 448ms 9ms 8ms 48ms 1ms # Rows sent 0 320.84k 194 3.68k 2.94k 3.52k 1.36k 3.52k # Rows examine 17 2.83G 26.61M 26.62M 26.62M 25.91M 0 25.91M # Rows affecte 0 0 0 0 0 0 0 0 # Rows read 17 2.83G 26.61M 26.62M 26.62M 25.91M 0 25.91M # Bytes sent 0 147.96M 16.00k 1.72M 1.36M 1.69M 697.61k 1.69M # Query size 0 69.72k 655 655 655 655 0 655 # String: # Databases p296100_tehnovse # Hosts # Last errno 0 (86/78%), 1160 (23/21%) # Users p296100_tehnovse # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms # 100ms # 1s # 10s+ ################################################################ # Tables # SHOW TABLE STATUS FROM `p296100_tehnovse` LIKE 's_variants'\G # SHOW CREATE TABLE `p296100_tehnovse`.`s_variants`\G # SHOW TABLE STATUS FROM `p296100_tehnovse` LIKE 's_products'\G # SHOW CREATE TABLE `p296100_tehnovse`.`s_products`\G # SHOW TABLE STATUS FROM `p296100_tehnovse` LIKE 's_products_categories'\G # SHOW CREATE TABLE `p296100_tehnovse`.`s_products_categories`\G # SHOW TABLE STATUS FROM `p296100_tehnovse` LIKE 's_images'\G # SHOW CREATE TABLE `p296100_tehnovse`.`s_images`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id, i.filename as image FROM s_variants v LEFT JOIN s_products p ON v.product_id=p.id LEFT JOIN s_products_categories pc ON p.id = pc.product_id AND pc.position=(SELECT MIN(position) FROM s_products_categories WHERE product_id=p.id LIMIT 1) LEFT JOIN s_images i ON p.id = i.product_id AND i.position=(SELECT MIN(position) FROM s_images WHERE product_id=p.id LIMIT 1) WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position\G # Query 2: 1.19 QPS, 0.02x concurrency, ID 0x2B7932AFEE815737 at byte 1416827562 # This item is included in the report because it matches --limit. # Scores: V/M = 0.13 # Time range: 2015-02-22 04:03:14 to 2015-02-23 03:57:41 # Attribute pct total min max avg 95% stddev median # ============ === ======= ======= ======= ======= ======= ======= ======= # Count 5 102134 # Exec time 3 1524s 827us 5s 15ms 26ms 45ms 7ms # Lock time 1 40s 79us 5s 394us 273us 18ms 98us # Rows sent 0 99.74k 1 1 1 1 0 1 # Rows examine 2 349.62M 1.12k 51.62k 3.51k 6.01k 3.45k 2.76k # Rows affecte 0 0 0 0 0 0 0 0 # Rows read 2 349.62M 1.12k 51.62k 3.51k 6.01k 3.45k 2.76k # Bytes sent 0 5.86M 60 63 60.19 59.77 0.06 59.77 # Query size 4 45.08M 462 463 462.77 441.81 0 441.81 # String: # Databases p27998_ope... (76195/74%)... 3 more # Hosts # Last errno 0 # Users p27998_ope... (76195/74%)... 3 more # Query_time distribution # 1us # 10us # 100us ############### # 1ms ################################################################ # 10ms ################################################ # 100ms ### # 1s # # 10s+ # Tables # SHOW TABLE STATUS FROM `p27998_opencart` LIKE 'oc_category_path'\G # SHOW CREATE TABLE `p27998_opencart`.`oc_category_path`\G # SHOW TABLE STATUS FROM `p27998_opencart` LIKE 'oc_product_to_category'\G # SHOW CREATE TABLE `p27998_opencart`.`oc_product_to_category`\G # SHOW TABLE STATUS FROM `p27998_opencart` LIKE 'oc_product'\G # SHOW CREATE TABLE `p27998_opencart`.`oc_product`\G # SHOW TABLE STATUS FROM `p27998_opencart` LIKE 'oc_product_description'\G # SHOW CREATE TABLE `p27998_opencart`.`oc_product_description`\G # SHOW TABLE STATUS FROM `p27998_opencart` LIKE 'oc_product_to_store'\G # SHOW CREATE TABLE `p27998_opencart`.`oc_product_to_store`\G # EXPLAIN /*!50100 PARTITIONS*/ SELECT COUNT(DISTINCT p.product_id) AS total FROM oc_category_path cp LEFT JOIN oc_product_to_category p2c ON (cp.category_id = p2c.category_id) LEFT JOIN oc_product p ON (p2c.product_id = p.product_id) 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' AND cp.path_id = '382'\G -- С уважением, Андрей Братанчук Системный администратор. Цитата Ссылка на сообщение Поделиться на другие сайты
koteyka Опубликовано 26 февраля, 2015 Жалоба Поделиться Опубликовано 26 февраля, 2015 oc_category_path - это что за таблица такая? Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 26 февраля, 2015 Жалоба Поделиться Опубликовано 26 февраля, 2015 oc_category_path - это что за таблица такая?Там еще OpenCart стоит Цитата Ссылка на сообщение Поделиться на другие сайты
Tw333k Опубликовано 27 февраля, 2015 Автор Жалоба Поделиться Опубликовано 27 февраля, 2015 это администратор хостинга случайно копирнул. На это обращать внимания не стоит oc_category_path - это что за таблица такая? Цитата Ссылка на сообщение Поделиться на другие сайты
Tw333k Опубликовано 27 февраля, 2015 Автор Жалоба Поделиться Опубликовано 27 февраля, 2015 нет чисто симпла, это администратор ошибся когда копировал Там еще OpenCart стоит Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 27 февраля, 2015 Жалоба Поделиться Опубликовано 27 февраля, 2015 (изменено) Tw333k Уберите саб-запросы или вынесите их отдельно. И вообще я думаю что можно попробовать обойтись и без них... Изменено 2 марта, 2015 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
Tw333k Опубликовано 2 марта, 2015 Автор Жалоба Поделиться Опубликовано 2 марта, 2015 Tw333kУберите саб-запросы или вынесите их отдельно. И вообще я думаю что можно попробовать обойтись и без них... ........... Попробуйте так: SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id, i.filename as image, MIN(pc.position) as pc_pmin, MIN(position) as i_pmin FROM s_variants v LEFT JOIN s_products p ON v.product_id=p.id LEFT JOIN s_products_categories pc ON (p.id = pc.product_id AND pc.position=pc_pmin) LEFT JOIN s_images i ON (p.id = i.product_id AND i.position=i_pmin) WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position а из какого файла их убрать? Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 2 марта, 2015 Жалоба Поделиться Опубликовано 2 марта, 2015 (изменено) писал не проверяя и чет натупил... В общем замените проблемный запрос в yandex.php на этот. Если никаких наработок связанных с позиционированием картинок и категорий - нет, то будет работать... SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id, i.filename as image FROM __variants v LEFT JOIN __products p ON v.product_id=p.id LEFT JOIN __products_categories pc ON (p.id = pc.product_id AND pc.position=0) LEFT JOIN __images i ON (p.id = i.product_id AND i.position=0) WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position Изменено 25 мая, 2015 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
Dilemma086 Опубликовано 25 мая, 2015 Жалоба Поделиться Опубликовано 25 мая, 2015 (изменено) писал не проверяя и чет натупил... В общем замените проблемный запрос в yandex.php на этот. Если никаких наработок связанных с позиционированием картинок и категорий - нет, то будет работать... SELECT v.price, v.id as variant_id, p.name as product_name, v.name as variant_name, v.position as variant_position, p.id as product_id, p.url, p.annotation, pc.category_id, i.filename as image FROM __variants v LEFT JOIN __products p ON v.product_id=p.id LEFT JOIN __product__categories pc ON (p.id = pc.product_id AND pc.position=0) LEFT JOIN __images i ON (p.id = i.product_id AND i.position=0) WHERE p.visible AND (v.stock >0 OR v.stock is NULL) GROUP BY v.id ORDER BY p.id, v.position Заменил, вот что выдает Я.М. после индексацииФатальная ошибка: Ошибка парсинга XML: Error parsing XML feed: Required child tag "offer" is missing for XML tag "offers" (строка 104, столбец 10) Изменено 25 мая, 2015 пользователем Dilemma086 Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 25 мая, 2015 Жалоба Поделиться Опубликовано 25 мая, 2015 да действительно. Допустил опечатку в названии таблицы.Замените __product__categories на __products_categories.Или скопируйте наново запрос с поста #8 Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.