Есть ли разница в производительности / совместимости разных языков в PostgreSQL? - PullRequest
13 голосов
/ 26 декабря 2010

В настоящее время PostgreSQL предлагает множество процедурных языков : pl / pgsql, pl / perl и т. Д.

Есть ли разница в скорости / потреблении памяти в процедурах, написанных на разных языках??

Кто-нибудь делал какой-нибудь тест?

Правда ли, что использование нативного pl / pgsql является наиболее правильным выбором?

Как процедура написана на C ++ и скомпилированав загружаемый модуль отличается по всем параметрам, если пользовательская функция написана на языках pl / *?

1 Ответ

9 голосов
/ 26 декабря 2010

Правильный выбор зависит от того, что именно вы собираетесь делать.

По моему опыту, pl / pgsql имеет меньше накладных расходов, чем, скажем, pl / perl, pl / python или pl / tcl, Если , то, что вы хотите сделать, легко выразить в pl / pgsql.Например, если вы делаете операции с базой данных.Тем не менее, накладные расходы, которые вы платите, например, за pl / perl, быстро возвращаются, если вы делаете что-то, в чем хорошо работает perl, например, при обработке строк.

В этих случаях нужно помнить одну вещь:что «более крупные» языки, такие как perl и python, имеют значительно более высокую стоимость запуска, чем pl / pgsql, - но это легко можно устранить с помощью постоянных соединений.

Функции, написанные на C, почти наверняка будут быстрее - и ониЯ буду использовать меньше памяти, если вы сможете написать код, который хорош в использовании небольшого количества памяти.Тем не менее, подслушивание их написания и обслуживания обычно на много хуже, чем PL - особенно при создании и деконструкции кортежей потребуется намного больше кода, чем вы думаете в любых сложных функциях.

Единственный язык стилей PL, который я нашел значительно медленнее других, это pl / java из-за издержек JVM.Но я уверен, что вы можете найти случаи, когда это быстрее для некоторых проблем.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...