- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Решение проблемы оплачу.
Связь желательная на емэйл 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)
------------------------
Скорее всего надо крутить настройки mysql-я.
Почти наверняка можно и сам запрос оптимизировать, но он поди каким-то софтом генерится.
Скорее всего надо крутить настройки mysql-я.
Почти наверняка можно и сам запрос оптимизировать, но он поди каким-то софтом генерится.
каким то??
`vegasdru`.`modx_site_tmplvar_contentvalues`
думаю, комментарии излишне