При выгрузке из 1С базы объёмом более 40 000 многопараметрических позиций запросы в базу "повисают", из-за чего скрипт поглощает большое количество ресурсов и "умирает".
При этом запросы "повисают" как при полной, так и измененной выгрузке из 1С.
Анализируя и решая проблему своими силами, мы также передали её на анализ непосредственно в техподдержку 1С-Битрикс.
Техподдержка 1С-Битрикс 1 месяц пыталась найти проблему (так и не решила).
Мы же обнаружили, что "повисает" запрос именно на процессе работы с таблицой b_xml_tree. До этого случая мы уже общались с техподдержкой 1С-Битрикс и выяснили, что данная таблица временная и создаётся автоматически, когда в ней есть необходимость (т.е. ее можно удалять без ущерба работе сайта).
Провели эксперимент, в котором мы сперва удалили таблицу b_xml_tree, а после чего запустили полный импорт. Эксперимент завершился успешно. Т.е. если таблица пуста и заполняется в процессе импорта, то запросы на ней не "повисают" и выгрузки проходят успешно.
В связи с этим достаточно удалять таблицу b_xml_tree, например, через PHPMyAdmin или в компоненте импорта сделать в начале (до импорта) 1 запрос в базу:
Код
P.S. Если у Вас есть в базе другие инфо-блоки, то сумму их элементов надо прибавлять к сумме позиций базы товаров, т.к. они также обрабатываются при импорте (например, у Вас 30 000 позиций в базе и при этом есть лента новостей с 10 000 новостей. Для системы это 40 000 элементов в обработке при импорте). DROP TABLE `b_xml_tree`; |
