Многие ребята на этом сайте утверждают, что: «Оптимизация чего-либо для производительности - корень всего зла». Моя проблема сейчас в том, что у меня много сложных SQL-запросов, многие из которых используют пользовательские функции в PL / pgSQL или PL / python. Моя проблема в том, что у меня нет какого-либо инструмента профилирования производительности, чтобы показать мне, какие функции на самом деле делают запросы медленными. Мой текущий метод состоит в том, чтобы исключить различные функции и занять время на запрос для каждой. Я знаю, что мог бы также использовать объяснение анализа, но я не думаю, что он предоставит мне информацию о пользовательских функциях.
Мой текущий метод довольно утомителен, тем более что в PostgreSQL нет запросов, поэтому мне иногда приходится ждать выполнения запроса в течение 60 секунд, если я решу запустить его на слишком большом количестве данных.
Поэтому я думаю, может ли быть хорошей идеей создать инструмент, который будет автоматически выполнять профилирование производительности SQL-запросов путем изменения SQL-запроса и определения фактического времени обработки в различных его версиях. Каждая версия будет упрощенной, которая может содержать только одну созданную пользователем функцию. Я знаю, что я не описываю, как сделать это четко, и я могу думать о многих усложняющих факторах, но я также вижу, что есть обходные пути для многих из этих факторов. Мне в основном нужно ваше внутреннее ощущение того, возможен ли такой метод.
Еще одна похожая идея - запустить параметры сервера настройки запросов work_mem для различных значений и показать, как это повлияет на производительность.
Такой инструмент может быть написан с использованием JDBC, поэтому его можно модифицировать для работы со всеми основными базами данных. В этом случае это может быть жизнеспособный коммерческий продукт.