“PRAGMA UDF” ile Fonksyon Performansı İyileştirme

Herkese Selam,

Bu yazıda Oracle 12c ile beraber gelen “PRAGMA UDF” sözdeyimden ve bunun performansa etkisinden bahsedecğim umarım farkındalık anlamında faydalı bir yazı olur.

Oracle 12c sürümü ile beraber fonksyonlar ve procedureler ile ilgili  epeyi  yenilikler yapılmıştı bunlardan birkaçını daha önce yazdığımı bir yazıda da paylaşmıştım(PL/SQL Inline Functions/Procedures). Bu yazıda da fonksyon performansımızı ufakta olsa etkileyecek bir yeniliğe bakacağız.

Yazdığımız fonksyonun tanım bölümüne “PRAGMA UDF” söz deyimini eklediğimiz takdirde Oracle bu fonksyonun kullanıcı tarafından (User Defined Function) yazılmış ve ilk etapta SQL engine üzerinde run edilmesi gereken bir fonksyon olduğunu algılar ve PL/SQL engine ile SQL engine arasında kod transferi olmasına müsade etmeden işlemi halletmeye çalışır. İki engine arasında bir switching olmayacağından fonksyon normalden bir miktar daha hızlı çalışır.

Şimdi örnek ile durumu inceleyelim.

ilk etapta pragma udf ile bir fonksyon yaratalım.

create or replace function fsquare(p_num number) return number is
pragma udf;
begin
return p_num*p_num;
end;

şimdi aynı işi yapan normal bir fonksyon yaratalım

create or replace function fsquare_old(p_num number) return number is
begin
return p_num*p_num;
end;

Artık 2 farklı yazilmis fonksyonu test edebiliriz.

set timing on
set serveroutput on
DECLARE
v_x number;
begin
for i in (select * from hr.employees) loop
select fsquare(i.employee_id) into v_x from dual;
end loop;
end;

anonymous block completed
Elapsed: 00:00:00.013
set timing on
set serveroutput on
DECLARE
v_x number;
begin
for i in (select * from hr.employees) loop
select fsquare_old(i.employee_id) into v_x from dual;
end loop;
end;

anonymous block completed
Elapsed: 00:00:00.017

Evet sonuçdan da anlaşılacağı üzere basit bir PL/SQL bloğunda %30 civarında bir kazanç sağladık. Burada önemli nokta yazacağımız fonksyonun karakteristiği compiler’ı engine switching’e zorlamaması. Bunun dışında oldukça performanslı çıktılar elde edebiliriz.

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Uncategorized and tagged , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s