Портирование PL / pgSQL хранимых процедур? - PullRequest
0 голосов
/ 12 января 2012

В нашей БД есть несколько хранимых процедур PL / pgSQL (PostgreSQL 9.x).

Они строго последовательны и при некоторых обстоятельствах могут быть очень медленными.

Мы подумываем о том, чтобы перенести их на PL / Java, PL / Python или что-то подобное, и используем возможности многопоточности этих языков.

Основной вопрос: насколько «эффективно» реализованы эти языковые поддержки? Например, я думаю о виртуальных машинах, которые выполняют код Java: при вызове моего кода PL / Java каждый раз, когда он вызывает для него новую виртуальную машину, или PL / Java сохраняет какой-то пул виртуальных машин и связывает одну из них для фактического звонка?

1 Ответ

3 голосов
/ 16 января 2012

Pl / Java работает в jvm, встроенном в бэкэнд-процесс postgres. См .: PL / Java wiki

Я бы посоветовал вам не просто переводить все в java, не посмотрев сначала на чистые решения SQL. Во многих случаях способность SQL работать с большим количеством записей в большом количестве перевесит любую выгоду от работы с записями индивидуально, но приведет к большему количеству вызовов SQL.

Многопоточность Java не дает преимуществ, если задача по своей сути последовательная.

...