Хранимая процедура Java против хранимой процедуры PL / SQL - PullRequest
14 голосов
/ 26 июля 2011

В СУБД Oracle, которая обеспечивает более высокую производительность, вызывая хранимую процедуру Java из другой хранимой процедуры pl / sql или вызывая хранимую процедуру pl / sql из другой хранимой процедуры pl / sql.

Кстати, в моей процедуре pl / sql есть цикл, который будет вызывать java-процедуру несколько раз (т. Е. Мой код переключается между PL / SQL и хранимыми процедурами Java), так что это замедляет производительность)?

1 Ответ

12 голосов
/ 19 августа 2011

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

Сохраняйте это простым, и если вы можете придерживаться PL / SQL, сделайте это.

У Тома Кайта (вице-президент и гуру корпорации Oracle) естьмантра, которая кажется подходящей для повторения здесь:

(Ссылка: http://tkyte.blogspot.com/2006/10/slow-by-slow.html)

  • Вы должны сделать это в одном операторе SQL, если это вообще возможно.
  • Есливы не можете сделать это в одном операторе SQL, а затем сделать это в PL / SQL.
  • Если вы не можете сделать это в PL / SQL, попробуйте хранимую процедуру Java.
  • Если вы не можете сделать этоэто в Java, сделайте это во внешней процедуре C.
  • Если вы не можете сделать это во внешней подпрограмме C, вы можете серьезно подумать о том, почему вам нужно это сделать ...
...