Требуется оптимизация MYSQL запроса (а может и администрирование сервера)

28
На сайте с 31.10.2009
Offline
116
1517

Решение проблемы оплачу.

Связь желательная на емэйл suxxel@mail.ru

Сайт на MODX.

Есть 15.000 товаров и 60.000 параметров к ним.

Самописный модуль делает выборку товаров из базы.

Выборка товаров из двух категорий занимает... в общем, долго, минут 5. Загружает процессор на 200% процессом mysqld. Приложил скрин к письму.

Перестало всё работать после нашествия вирусни. Вирусню давно удалили, образ системы переставили, работать всё перестало. Техподдержка не признаётся. :)

Вот цитата техподдержки:

-------------------------------------

Собственно, проблема заключается в запросе, который делает выборку с сортировкой. Полный запрос привожу ниже:

SELECT

sc.*, price.value as price,spare_vendor.value as spare_vendor,spare_compatibility.value as spare_compatibility,spare_articul.value as spare_articul

FROM

`vegasdru`.`modx_site_content` sc

LEFT OUTER JOIN `vegasdru`.`modx_site_tmplvar_contentvalues` price ON price.contentid=sc.id AND price.tmplvarid=17 LEFT OUTER JOIN `vegasdru`.`modx_site_tmplvar_contentvalues` spare_vendor ON spare_vendor.contentid=sc.id AND spare_vendor.tmplvarid=39 LEFT OUTER JOIN `vegasdru`.`modx_site_tmplvar_contentvalues` spare_compatibility ON spare_compatibility.contentid=sc.id AND spare_compatibility.tmplvarid=40 LEFT OUTER JOIN `vegasdru`.`modx_site_tmplvar_contentvalues` spare_articul ON spare_articul.contentid=sc.id AND spare_articul.tmplvarid=41

WHERE FIND_IN_SET(sc.parent, "2284,2286,2285,2287,2288,2289,2290,2291,2292,2293,13666,2294,2295,2296,2297,2298,2299,2300,2301,2307,2308,2309,2310,2311,2312,2313,2315,2318,2319,2321,2320,2322,2323,2324,2325,2326,2327") AND sc.template=17 AND sc.deleted=0 AND sc.published=1 AND ((CAST(spare_vendor.value as SIGNED) >= 11197) AND (CAST(spare_vendor.value as SIGNED) <= 11197)) ORDER BY CAST(sc.menuindex as SIGNED) ASC LIMIT 0,24

Если посмотреть статистику при выполнении этого запроса, видно, что 4 из 5 выполняемых подзапросов требуют использования буффера join'ов.

*************************** 1. row ***************************

id: 1

select_type: SIMPLE

table: sc

type: ALL

possible_keys: NULL

key: NULL

key_len: NULL

ref: NULL

rows: 12786

Extra: Using where; Using temporary; Using filesort

*************************** 2. row ***************************

id: 1

select_type: SIMPLE

table: price

type: ALL

possible_keys: NULL

key: NULL

key_len: NULL

ref: NULL

rows: 68932

Extra: Using where; Using join buffer (flat, BNL join)

*************************** 3. row ***************************

id: 1

select_type: SIMPLE

table: spare_vendor

type: ALL

possible_keys: NULL

key: NULL

key_len: NULL

ref: NULL

rows: 68932

Extra: Using where; Using join buffer (incremental, BNL join)

*************************** 4. row ***************************

id: 1

select_type: SIMPLE

table: spare_compatibility

type: ALL

possible_keys: NULL

key: NULL

key_len: NULL

ref: NULL

rows: 68932

Extra: Using where; Using join buffer (incremental, BNL join)

*************************** 5. row ***************************

id: 1

select_type: SIMPLE

table: spare_articul

type: ALL

possible_keys: NULL

key: NULL

key_len: NULL

ref: NULL

rows: 68932

Extra: Using where; Using join buffer (incremental, BNL join)

------------------------

png 1.png
Борец за чистоту Интернета.
_
На сайте с 24.03.2008
Offline
381
#1

Скорее всего надо крутить настройки mysql-я.

Почти наверняка можно и сам запрос оптимизировать, но он поди каким-то софтом генерится.

_
На сайте с 11.07.2008
Offline
90
#2
_SP_:
Скорее всего надо крутить настройки mysql-я.
Почти наверняка можно и сам запрос оптимизировать, но он поди каким-то софтом генерится.

каким то??

`vegasdru`.`modx_site_tmplvar_contentvalues`

думаю, комментарии излишне

Предоставляю услуги программирования и администрирования. Бесплатная фриланс биржа (https://allfreelancers.su/)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий