Gblog

おもにTips

PL/SQLのチューニング?

PL/SQLで、SQL以外の部分が遅い場合は、NATIVE Compile で改善できます。

  • plsql_code_type = INTERPRETED の場合(デフォルト)
alter session set plsql_code_type = INTERPRETED;
create or replace function f return number
is
   i simple_integer := 0;
begin
   for j in 1..1000000000
   loop i := i + 1; end loop;
   return i;
end;
/
set timing on;
select f from dual;

 

  • plsql_code_type = NATIVE の場合
alter session set plsql_code_type = NATIVE;
create or replace function f return number
is
   i simple_integer := 0;
begin
   for j in 1..1000000000
   loop i := i + 1; end loop;
   return i;
end;
/
set timing on;
select f from dual;

 

手元の結果はこんなかんじ。

  • INTERPRETED の場合
経過: 00:00:10.01

 

  • NATIVE の場合
経過: 00:00:01.87

 

デメリットは、parse のコストが高いこと。ですが実際にその影響で遅延したようなケースは確認したことないです。

ストアド・プロシージャが多い環境ではとりあえず NATIVE でよいのではないでしょうか。