Oracle veritabanı üzerinde çalıştırdığımız sorguların ne kadar sürede çalıştığını saniyenin 100’de 1’i hassasiyetinde görmek için DBMS_UTILITY.GET_TIME fonksiyonunun kullanımını göstereceğim. DBMS_UTILITY.GET_TIME Ne Zaman Kullanılır ? Genelde kod blokları içerisinde birden fazla sql çalışıyorsa, hangisinin ne kadar süre çalıştığını bulmak için kullanılır. Veya aynı anda birden fazla iş yapan bir loop’un içerisindeki işlerin ne kadar süre çalıştığını görebilirsiniz. DBMS_UTILITY.GET_TIME Nasıl Kullanılır ? Başlangıç ve bitiş değerlerini tutacağımız birer değişken tanımlanır. Ben test amacıyla v_adet isimli değişkeni de oluşturdum. Örnek göstermek dba_tables’taki sütun sayısını bulup bu değişkene atayacağım. dbms_utility.get_time fonksiyonunu her çağırdığımda bir değer döner. Bu sebeple çalışma süresini ölçeceğim sql & pl sql’in başında ve sonunda GET_TIME fonksiyonunu çağırarak başlangıç ve bitiş zamanlarını ilgili değişkenlere atarım. Başlangıç değerini bitiş değerinden çıkarttığım zaman aradaki fark bana sql’in çalışma süresini verecektir. Bu değeri görebilmek için dbms_output.put_line fonksiyonunu kullanarak Console(output) ekranına ilgli değeri yazdırdım. Ekranda yazan değer saniyenin 100’de biri cinsindendir. Bu değeri 100’e bölerseniz saniye cinsinsen sql’in çalışma süresini bulursunuz.

declare
  v_baslangic number;
  v_bitis     number;
  v_adet      number;
begin
  v_baslangic:=dbms_utility.get_time;
  select count(*) into v_adet from dba_tables;
  v_bitis:=dbms_utility.get_time;
  
  dbms_output.put_line(v_bitis-v_baslangic);  --saniyenin yüzde biri
  dbms_output.put_line( (v_bitis-v_baslangic)/100 || 'sn');
end;

 

dbms_utility.get_time

dbms_utility.get_time

Sorgunun ne kadar süre çalıştığını sysdate kullanarak da bulabilirim ama sysdate’i formatlamakla uğraşmaktansa Oracle’ın kullanımı basit fonksiyonunu kullanmayı tercih ederim.