powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
25 сообщений из 25, страница 1 из 1
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248219
Colas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здравствуйте! Надеюсь кто-нибудь подскажет правильное решение. Сразу извиняюсь, сам я в мускуле очень неважно разбираюсь. Но хостер тоже ничего не может сказать.

Есть сайт на Битриксе на общем хостинге с каталогом ~12k товаров. База 5.2.14-MariaDB, таблицы MyISAM. Производительность в целом удовлетворительная, а базы хорошая (поэтому не хочется переводить в InnoDB).

Опуская все лишнее, для специальной обработки из базы стандартным функционалом Битрикс (CIBlockElement::GetList) выбирается список элементов. Весь запрос приложил файлом (с абстрактными значениями ключей), но самый интересный блок, а именно подзапрос, видимо, этот:

Код: sql
1.
2.
3.
4.
SELECT DISTINCT BSE.IBLOCK_ELEMENT_ID
   FROM b_iblock_section_element BSE
   INNER JOIN b_iblock_section BS ON BSE.IBLOCK_SECTION_ID = BS.ID
   WHERE ((BS.ID IN (249, 529, 250... 1432)))



Проблема в том, что когда этих IBLOCK_SECTION_ID в условии становится ровно 755 или больше, то мускуль загибается почти совсем, когда 754 или меньше выполняется практически мгновенно (для такого большого и редкого запроса). От того, какие именно IDшники убрать/добавить разница не меняется.

Разница катастрофическая - скачек времени выполнения с 0.4 секунды до 2 минут. Запрос висит в состоянии Sending data , блокирует таблицы. При этом это чистый зависон, сам я не могу смотреть загрузку процессоров БД на хостинге, но ТП мне сказала, что никакой значимой нагрузки при выполнении долгого запроса не возникает.

Может быть кто-нибудь с таким сталкивался? Хостер предложил увеличить join_buffer_size - не помогло. Сам пробовал наращивать разные переменные, эффекта ноль. Но судя по всему, просто что-то где-то в среде выполнения запроса резко заканчивается.
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248221
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А размер входного пакета какой?
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248274
Colas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, max allowed packet был 1МБ, поменял на дефолтное 4МБ. К сожалению, без эффекта.
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248276
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лог ошибок посмотри. план запроса посмотри.
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248305
Colas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrow, ошибок вроде нет (даже не знаю, где у хостера их смотреть). План запроса это EXPLAIN? Тогда разница есть, хотя я ее понять не могу. Может быть Вы поможете?

"Хороший" запрос:

авторid select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY B const PRIMARY PRIMARY 4 const 1
1 PRIMARY L const PRIMARY PRIMARY 6 const 1 Using index
1 PRIMARY FP0 ref ix_iblock_property_1,ix_iblock_property_2 ix_iblock_property_2 153 const 1
1 PRIMARY FP1 const PRIMARY,ix_iblock_property_1 PRIMARY 4 const 1
1 PRIMARY FP2 const PRIMARY,ix_iblock_property_1 PRIMARY 4 const 1
1 PRIMARY FP3 const PRIMARY,ix_iblock_property_1 PRIMARY 4 const 1
1 PRIMARY FP4 const PRIMARY,ix_iblock_property_1 PRIMARY 4 const 1
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 10582 Using join buffer
1 PRIMARY BE eq_ref PRIMARY,ix_iblock_element_1,ix_iblock_element_4,ix_iblock_element_3,ix_iblock_element_code PRIMARY 4 BES.IBLOCK_ELEMENT_ID 1 Using where
1 PRIMARY CAT_P6 ref IXS_CAT_PRICE_PID,IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 BES.IBLOCK_ELEMENT_ID,const 1 Using index
1 PRIMARY CAT_P8 ref IXS_CAT_PRICE_PID,IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 uXXXXX.BE.ID,const 1 Using index
1 PRIMARY CAT_P9 ref IXS_CAT_PRICE_PID,IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 BES.IBLOCK_ELEMENT_ID,const 1 Using index
1 PRIMARY CAT_PR eq_ref PRIMARY PRIMARY 4 BES.IBLOCK_ELEMENT_ID 1
1 PRIMARY CAT_IB eq_ref PRIMARY PRIMARY 4 uXXXXX.BE.IBLOCK_ID 1
1 PRIMARY FPV0 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 BES.IBLOCK_ELEMENT_ID,uXXXXX.FP0.ID 1 Using index
1 PRIMARY FPV1 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP1.ID 1
1 PRIMARY FPV2 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP2.ID 1
1 PRIMARY FPV3 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP3.ID 1 Using index
1 PRIMARY FPV4 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP4.ID 1 Using index
2 DERIVED BS range PRIMARY PRIMARY 4 NULL 752 Using where; Using index; Using temporary
2 DERIVED BSE ref ux_iblock_section_element ux_iblock_section_element 4 uXXXXX.BS.ID 16 Using index

"Плохой" запрос:

авторid select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY B const PRIMARY PRIMARY 4 const 1
1 PRIMARY L const PRIMARY PRIMARY 6 const 1 Using index
1 PRIMARY FP0 ref ix_iblock_property_1,ix_iblock_property_2 ix_iblock_property_2 153 const 1
1 PRIMARY FP1 const PRIMARY,ix_iblock_property_1 PRIMARY 4 const 1
1 PRIMARY FP2 const PRIMARY,ix_iblock_property_1 PRIMARY 4 const 1
1 PRIMARY FP3 const PRIMARY,ix_iblock_property_1 PRIMARY 4 const 1
1 PRIMARY FP4 const PRIMARY,ix_iblock_property_1 PRIMARY 4 const 1
1 PRIMARY BE ref PRIMARY,ix_iblock_element_1,ix_iblock_element_4,ix_iblock_element_3,ix_iblock_element_code ix_iblock_element_code 4 const 10489 Using where
1 PRIMARY CAT_P6 ref IXS_CAT_PRICE_PID,IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 uXXXXX.BE.ID,const 1 Using index
1 PRIMARY CAT_P8 ref IXS_CAT_PRICE_PID,IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 uXXXXX.BE.ID,const 1 Using index
1 PRIMARY CAT_P9 ref IXS_CAT_PRICE_PID,IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 uXXXXX.BE.ID,const 1 Using index
1 PRIMARY CAT_PR eq_ref PRIMARY PRIMARY 4 uXXXXX.BE.ID 1
1 PRIMARY CAT_IB eq_ref PRIMARY PRIMARY 4 uXXXXX.BE.IBLOCK_ID 1
1 PRIMARY FPV0 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP0.ID 1 Using index
1 PRIMARY FPV1 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP1.ID 1
1 PRIMARY FPV2 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP2.ID 1
1 PRIMARY FPV3 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP3.ID 1 Using index
1 PRIMARY FPV4 ref ix_iblock_element_property_1,ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID,uXXXXX.FP4.ID 1 Using index
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 10672 Using where; Using join buffer
2 DERIVED BS range PRIMARY PRIMARY 4 NULL 756 Using where; Using index; Using temporary
2 DERIVED BSE ref ux_iblock_section_element ux_iblock_section_element 4 uXXXXX.BS.ID 16 Using index
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248323
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Походу тебе надо поизучать http://dev.mysql.com/doc/refman/5.7/en/internal-temporary-tables.html - посмотри, что у тебя в tmp_table_size и max_heap_table_size, помониторь во время выполнения "плохого" и "хорошего" запросов значения Created_tmp_tables и Created_tmp_disk_tables. Хотя уже само по себе In some cases, the server creates internal temporary tables while processing statements. Users have no direct control over when this occurs.ни разу не вдохновляет...
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248337
Colas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinaпосмотри, что у тебя в tmp_table_size и max_heap_table_size
Уже нарастил (с 16 до 24 МБ), не помогло.

Akinaпомониторь во время выполнения "плохого" и "хорошего" запросов значения Created_tmp_tables и Created_tmp_disk_tables.

А где их можно лицезреть, да так, чтобы успеть за хорошим запросом?
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248341
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Colasгде их можно лицезреть
в консоли, вестимо

Colasтак, чтобы успеть за хорошим запросом?
добавь в список полей вывода sleep() секунд на несколько, и успевай
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248393
Colas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прогрессивная симптоматика! Теперь все виснет на 661 ID в запросе! :) Может это связано с тем, что я правил tmp_table_size на 24 МБ, но вернул на место 16 МБ.

Временных таблиц на диске действительно многовато, но точно сказать, сколько генерируется не могу, так как величина постоянно увеличивается. Но при долгом запросе держится на одном значении.

Created_tmp_disk_tables 1,730
Created_tmp_files 5
Created_tmp_tables 4,640
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248398
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы попробовал ещё увеличить tmp_table_size и max_heap_table_size - особенно если "есть куда расти". Скажем, до 64М, для начала...
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248470
Colas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чудесатые чудеса. Решил перезапустить mysql (у хостера это делается пересохранением настроек в админке), чтобы откатить настройки базы к дефолтным (на хостинге). И заработало, больше (пока и на текущей базе) я не могу создать задержку выполнения запросов, что очень странно потому, что ребята из ТП делали это не раз, разбираясь с моей заявкой.

Решил переустановить настройки, вспомнил про optimizer_search_depth, которую давно установил на 0. Зачем написано здесь и здесь . Благодаря перезапуску мускуля ТП значение вернулось к дефолтному 62 (сейчас уже не могу точно сказать, не восстанавливали ли его на 0 админы ТП, когда перезапускали).

Оказалось, что непонятным образом виноват этот параметр (обычно с ним наоборот проблемы). Если ставлю на 0, то начинаются зависоны, со стандартным значением пока работает нормально. Будем смотреть, возможно для исправления обеих проблем (если старая вернется а новая решилась) потребуется установить какое-то среднее значение.

На данный момент, спасибо всем за участие в решении проблемы! Узнал много нового.
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248722
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор PRIMARY <derived2> ALL NULL NULL NULL NULL 10582 Using join buffer
вот из за этого дохнет
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248746
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowвот из за этого дохнетА откуда взяться индексам у подзапроса?
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39248960
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaScareCrowвот из за этого дохнетА откуда взяться индексам у подзапроса?
не тот запрос сорри.
помирает
автор1 PRIMARY BE ref PRIMARY,ix_iblock_element_1,ix_iblock_element_4,ix_iblock_element_3,ix_iblock_element_code ix_iblock_element_code 4 const 10489 Using where
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39249153
Colas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ScareCrow, то есть, насколько я понял из мануала , SECTION_ID вдруг перестает быть PRIMARY KEY or UNIQUE NOT NULL ?
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39249424
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ColasScareCrow, то есть, насколько я понял из мануала , SECTION_ID вдруг перестает быть PRIMARY KEY or UNIQUE NOT NULL ?
чего?
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39249474
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Без комментариев, просто причесать пост:
ColasScareCrow, ошибок вроде нет (даже не знаю, где у хостера их смотреть). План запроса это EXPLAIN? Тогда разница есть, хотя я ее понять не могу. Может быть Вы поможете?

"Хороший" запрос:

id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY B const PRIMARY PRIMARY 4 const 1 1 PRIMARY L const PRIMARY PRIMARY 6 const 1 Using index1 PRIMARY FP0 ref ix_iblock_property_1, ix_iblock_property_2 ix_iblock_property_2 153 const 1 1 PRIMARY FP1 const PRIMARY, ix_iblock_property_1 PRIMARY 4 const 1 1 PRIMARY FP2 const PRIMARY, ix_iblock_property_1 PRIMARY 4 const 1 1 PRIMARY FP3 const PRIMARY, ix_iblock_property_1 PRIMARY 4 const 1 1 PRIMARY FP4 const PRIMARY, ix_iblock_property_1 PRIMARY 4 const 1 1 PRIMARY <derived2> ALL NULLNULLNULLNULL10582 Using join buffer1 PRIMARY BE eq_ref PRIMARY, ix_iblock_element_1, ix_iblock_element_4, ix_iblock_element_3, ix_iblock_element_code PRIMARY 4 BES.IBLOCK_ELEMENT_ID 1 Using where1 PRIMARY CAT_P6 ref IXS_CAT_PRICE_PID, IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 BES.IBLOCK_ELEMENT_ID, const 1 Using index1 PRIMARY CAT_P8 ref IXS_CAT_PRICE_PID, IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 uXXXXX.BE.ID, const 1 Using index1 PRIMARY CAT_P9 ref IXS_CAT_PRICE_PID, IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 BES.IBLOCK_ELEMENT_ID, const 1 Using index1 PRIMARY CAT_PR eq_ref PRIMARY PRIMARY 4 BES.IBLOCK_ELEMENT_ID 1 1 PRIMARY CAT_IB eq_ref PRIMARY PRIMARY 4 uXXXXX.BE.IBLOCK_ID 1 1 PRIMARY FPV0 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 BES.IBLOCK_ELEMENT_ID, uXXXXX.FP0.ID 1 Using index1 PRIMARY FPV1 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP1.ID 1 1 PRIMARY FPV2 ref ix_iblock_element_property_1,i x_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP2.ID 1 1 PRIMARY FPV3 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP3.ID 1 Using index1 PRIMARY FPV4 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP4.ID 1 Using index2 DERIVED BS range PRIMARY PRIMARY 4 NULL752 Using where; Using index; Using temporary2 DERIVED BSE ref ux_iblock_section_element ux_iblock_section_element 4 uXXXXX.BS.ID 16 Using index
"Плохой" запрос:

id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY B const PRIMARY PRIMARY 4 const 1 1 PRIMARY L const PRIMARY PRIMARY 6 const 1 Using index1 PRIMARY FP0 ref ix_iblock_property_1, ix_iblock_property_2 ix_iblock_property_2 153 const 1 1 PRIMARY FP1 const PRIMARY, ix_iblock_property_1 PRIMARY 4 const 1 1 PRIMARY FP2 const PRIMARY, ix_iblock_property_1 PRIMARY 4 const 1 1 PRIMARY FP3 const PRIMARY, ix_iblock_property_1 PRIMARY 4 const 1 1 PRIMARY FP4 const PRIMARY, ix_iblock_property_1 PRIMARY 4 const 1 1 PRIMARY BE ref PRIMARY, ix_iblock_element_1, ix_iblock_element_4, ix_iblock_element_3, ix_iblock_element_code ix_iblock_element_code 4 const 10489 Using where1 PRIMARY CAT_P6 ref IXS_CAT_PRICE_PID, IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 uXXXXX.BE.ID,const 1 Using index1 PRIMARY CAT_P8 ref IXS_CAT_PRICE_PID, IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 uXXXXX.BE.ID,const 1 Using index1 PRIMARY CAT_P9 ref IXS_CAT_PRICE_PID, IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 uXXXXX.BE.ID,const 1 Using index1 PRIMARY CAT_PR eq_ref PRIMARY PRIMARY 4 uXXXXX.BE.ID 1 1 PRIMARY CAT_IB eq_ref PRIMARY PRIMARY 4 uXXXXX.BE.IBLOCK_ID 1 1 PRIMARY FPV0 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP0.ID 1 Using index1 PRIMARY FPV1 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP1.ID 1 1 PRIMARY FPV2 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP2.ID 1 1 PRIMARY FPV3 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP3.ID 1 Using index1 PRIMARY FPV4 ref ix_iblock_element_property_1, ix_iblock_element_property_2 ix_iblock_element_property_1 8 uXXXXX.BE.ID, uXXXXX.FP4.ID 1 Using index1 PRIMARY <derived2> ALL NULLNULLNULLNULL10672 Using where; Using join buffer2 DERIVED BS range PRIMARY PRIMARY 4 NULL756 Using where; Using index; Using temporary2 DERIVED BSE ref ux_iblock_section_element ux_iblock_section_element 4 uXXXXX.BS.ID 16 Using index
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39249851
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у тебя сервак ворочает 10489 строк. на этом и дохнет. найди в каком месте запроса он это делает.
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39250639
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может имеет смысл создать временную таблицу с перечисляемыми значениями, а потом просто подключать ее в запросе? И не париться с механизмами mySql?
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39250737
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39250983
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть некая разница в двух запросах -- посмотрите какие
референсы используются в строчках
CAT_P6, CAT_P8, CAT_P9, CAT_PR и может еше гденибудь

В самом СКЛ-е есть
INNER JOIN
( SELECT DISTINCT BSE.IBLOCK_ELEMENT_ID
FROM b_iblock_section_element BSE
INNER JOIN b_iblock_section BS ON BSE.IBLOCK_SECTION_ID = BS.ID
WHERE ((BS.ID IN (123, 24, 1025, 326, ..., 1432))))BES
ON BES.IBLOCK_ELEMENT_ID = BE.ID


Так вот, кое где используется РЕФ на BES.IBLOCK_ELEMENT_ID
кое-где на BE.ID.

Заметим что в тексте СКЛ-а в явном виде CAT_P6.PRODUCT_ID = BE.ID
но в "хорошем" запросе подстава

PRIMARY CAT_P6 ref IXS_CAT_PRICE_PID, IXS_CAT_PRICE_GID IXS_CAT_PRICE_PID 8 BES.IBLOCK_ELEMENT_ID

...является ли это причиной замедления я не в курсе.
Можно проверить , напромер если поменять все CAT_xx
связки на и посмотерть скорость.

CAT_хх.PRODUCT_ID = BES.IBLOCK_ELEMENT_ID
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39250985
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...вообще СКЛ имеет дофия жоинтов...оптимизатор заколебётся
перебирать все варианты... возможно у него нехватка времени
(оптимизатор имеет времменые рамки и не имеет право делать
долгий перебор вариантов). Т.е. иногда он успел
угадать подставу, иногда не успел -- и соответвено вывалился
на диск создавая временую таблицу.

...если это предположение верно, то можно
попробовать поставить BES подселект первым
на самый верх и оставить или поменять
порядок в "ON"...
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39251082
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпопробовать поставить BES подселект первым
на самый верх и оставить или поменять
порядок в "ON"..
это битрикс.
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39251356
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowавторпопробовать поставить BES подселект первым
на самый верх и оставить или поменять
порядок в "ON"..
это битрикс.


...битрикс не знаю, но слишал что там все генерится само...
ну...тогда надо искать настройки оптимизатора...
как-то дать ему больше времени....или на более современый МуСКЛ
переходить -- говорят там оптимизатор лучше ... и другие улучшения...
например я сам видел как новый МыСКЛ строит на лету (!) индексы
по под-запросу....
...
Рейтинг: 0 / 0
Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
    #39251387
Colas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа, большое спасибо за участие! Особенно спасибо javajdbc за в целом понятное для меня объяснение. На данный момент проблема отсутствует (и я надеюсь, это надолго). Битрикс действительно не славится качеством генерируемых запросов, впрочем, я вряд ли бы сгенерировал лучше. Но теперь буду знать, куда копать, если что.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Мускуль резко помирает на чуть увеличенном колличественно запросе, на меньшем живет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]