Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > Получение промежуточных данных запроса


Автор: Severyanin 19.8.2015, 07:30
Добрый день. Возникла необходимость получения промежуточных данных запроса. Например, у меня есть несколько таблиц и запрос, который делает выборку из них с помощью JOIN. В результате я получаю готовый набор данных. Сейчас у меня задача написать функциональные тесты на такие запросы, соответственно, мне нужно подготовить фикстуры для них и заливать в них всю текущую информацию из таблиц я не могу. Значит, мне нужно каким-то образом получить промежуточные результаты для каждого из подзапросов, чтобы знать, какую часть данных заливать в фикстуры. Примерно что-то вроде explain analyse. но чтобы вместо метрик на каждую операцию выдавала подмножество результатов. Сталктвался ли кто-нибудь с таким инструментом?
Спасибо

Автор: Akina 19.8.2015, 09:01
А что, подзапросы - недетерминированные?

Автор: Severyanin 19.8.2015, 10:09
Часть подзапросов я могу выделить, но часть либо без JOIN выжают все данные, либо с ними выдают пустой результат. Пытаюсь сейчас все это выполнять руками. Думал, что возможно есть для этого что-то вроде EXPLAIN ANALYSE, только чтобы оно показывало не бенчмарки, а данные, чтобы не перелопачивать кучу таких запросов вручную, что будет довольно долго

Автор: Akina 19.8.2015, 16:53
Такого не бывает. Просто потому, что промежуточные рабочие данные при выполнении запросов как правило не представимы в виде наборов записей. Да и по сути таковыми не являются.

Автор: Severyanin 20.8.2015, 05:49
Понятно, спасибо. Тимлид наш просто говорил о подобной тулзе для MsSQLServer, вот я и начал искать

Добавлено через 1 минуту и 31 секунду
Цитата(Akina @ 19.8.2015,  16:53)
Такого не бывает. Просто потому, что промежуточные рабочие данные при выполнении запросов как правило не представимы в виде наборов записей. Да и по сути таковыми не являются.


Не мог бы ты еще поделиться ссылкой на более подробную инфу

Автор: Akina 20.8.2015, 09:04
Цитата(Severyanin @  20.8.2015,  06:49 Найти цитируемый пост)
Не мог бы ты еще поделиться ссылкой на более подробную инфу 

Специально никогда не заморачивался на этом вопросе. Если тебя это интересует - начни с углублённого описания планов выполнения запросов и ищи сведения о том, как программно реализуются те или иные методы связывания, отбора, группировки и сортировки, т.е., например, как принятое решение оптимизатора использовать, ну, скажем, nested loop для связывания, трансформируется в программный код его выполнения. Не убеждён, что удастся найти информацию такой глубины для MS SQL, скорее надо искать её для серверов с открытым кодом (например, для MySQL) - принципы везде одни и те же, просто глубина проработки и вариабельность разная.

Цитата(Severyanin @  20.8.2015,  06:49 Найти цитируемый пост)
Тимлид наш просто говорил о подобной тулзе для MsSQLServer

Думаю, эта тулза (если таковая существует, в чём я пока не убеждён) выполняет самостоятельный парсинг запроса и отдельно запрашивает выполнение субструктур, которые ей удалось выделить из текста запроса.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)