Возможный способ сделать автоматическое тестирование производительности на различных технологиях баз данных? - PullRequest
0 голосов
/ 04 марта 2011

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

Мой текущий метод довольно утомителен, тем более что в PostgreSQL нет запросов, поэтому мне иногда приходится ждать выполнения запроса в течение 60 секунд, если я решу запустить его на слишком большом количестве данных.

Поэтому я думаю, может ли быть хорошей идеей создать инструмент, который будет автоматически выполнять профилирование производительности SQL-запросов путем изменения SQL-запроса и определения фактического времени обработки в различных его версиях. Каждая версия будет упрощенной, которая может содержать только одну созданную пользователем функцию. Я знаю, что я не описываю, как сделать это четко, и я могу думать о многих усложняющих факторах, но я также вижу, что есть обходные пути для многих из этих факторов. Мне в основном нужно ваше внутреннее ощущение того, возможен ли такой метод.

Еще одна похожая идея - запустить параметры сервера настройки запросов work_mem для различных значений и показать, как это повлияет на производительность.

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

1 Ответ

1 голос
/ 04 марта 2011

Apache JMeter может использоваться для загрузки теста и мониторинга производительности запросов SQL (с использованием JDBC). Однако он не изменит ваш SQL.

На самом деле я не думаю, что какой-либо инструмент может упростить, а затем повторно запустить SQL. Как это «упрощение» должно работать?

...