RDT1C
RDT1C copied to clipboard
Консоль запросов. Интерактивный режим отладки. InterDataProcessorCommunications
Предлагаю сделать следующую хитрую доработку. Предположим у нас есть задача отладить запрос с менеджером временных таблиц, где больше 100 таблиц размером свыше 500к строк в некоторых из них. Функцией От() такой контекст выгружается как 20Гигабайтовый .deb файл. Который потом в консоль запросов грузится около часа-двух. В некоторых случаях сразу после этого происходит попытка пересоздания менеджера временных таблиц (или их очистка), такое требование у ИР...
Идея заключается в следующем. Добавляем в функцию От() флаг "интерактивного режима" и передаем в неё Запрос или МенеджерВременныхТаблиц. На стороне сеанса ИР в консоли запроса делаем команду - "Подключиться к отладчику", который выставляет "параметр отладки", например через "Общее хранилище системных настроек". На точке останова в коде вызываем функцию От(), которая в "интерактивном режиме" запускает бесконечный цикл (тут нужно подумать о Паузе), если существует сеанс с включенной "отладкой запроса". В этом цикле через какой-нибудь общедоступный вариант (файл в сетевой папке, или то же общее хранилище системных настроек (клиент/сервер)) коммуникации, функция От() входит в "режим сервера", который может отправлять или принимать команды. На стороне сеанса ИР после "удачного соединения с отладчиком запроса" в Консоли запроса появляется текст запроса, список временных таблиц и параметры. Становится доступной кнопка "Выполнить". При нажатии на которую отправляется "команда" в функцию От() на выполнение запроса - передается текст запроса (если изменялся) и параметры (если менялись), после чего запрос выполняется непосредственно в функции От(), а результат передается обратно в "консоль запросов" и выводится. Со стороны пользователя это будет выглядеть как обычная работа с запросом в консоли запросов, хотя весь контекст при этом будет находится совершенно в другом сеансе.
Это позволит отлаживать тяжелые запросы содержащих временные таблицы в МВТ с сохранением их индексов и сократит время ожидания на загрузку .deb файлов.
Основная проблема, которую я пока вижу - организация "межсеансового" взаимодействия и вероятные проблемы на передачу результатов запроса.
сразу после этого происходит попытка пересоздания менеджера временных таблиц
Этот период настраивается в консоли запросов. Например можно установить 6ч.
Затея мне кажется обречена на неуспех, т.к. штатных механизмов в платформе для ее решения точно нет. К тому же проблема довольно редкая. Поэтому заниматься ею я не буду до предоставления доказательства концепции (рабочего прототипа).
Однако можно подумать над оптимизацией существующего функционала. Для этого желательно предоставить
- Снимок, где все таблицы будут обрезаны до 1-10 строк.
- Замер производительности отладчика операции открытия в консоли запросов снимка с обрезкой до 100 строк.
- Техническую информацию
Создал задачу на небольшую оптимизацию https://www.hostedredmine.com/issues/951952
Еще можно попробовать вручную не все временные таблицы сохранять, а сохранять запросы, их создающие. Затем собирать их в один файл консоли запросов. Затем выполнять эти запросы. Затем уже выполнять главный запрос.
Оптимизация выполнена в 6.49
Мне было бы полезно узнать, насколько ускорилось выполнение твоей операции.