Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  Oracle için bulk, fazla sayıda işlemin bir defada yapılabilmesini sağlayan yapıdır. Eğer aynı işi çok defa yapacak iseniz bulk kullanmanız context switching leri engelleyeceği için performans arttıracaktır. Daha çok collection yapılarında kullanılır.

Performans üzerinde etkisini gösterebilmek için aşağıdaki örneği inceleyebilirsiniz.

Connected to Oracle Database 10g Express Edition Release 10.2.0.1.0
Connected as SYS



SQL> create type number_list is table of number;
  2  /

Type created

Executed in 0,09 seconds


SQL> create table numbers(i number);

Table created

Executed in 0,03 seconds


SQL> BEGIN
  2    FOR i IN 1 .. 1000000 LOOP
  3      INSERT INTO numbers values(i);
  4    END LOOP;
  5  END;
  6  /

PL/SQL procedure successfully completed

Executed in 61,409 seconds

SQL> commit;

Commit complete

Executed in 0,01 seconds

SQL> DECLARE
  2    total NUMBER := 0;
  3  BEGIN
  4    FOR rec IN (SELECT i FROM numbers) LOOP
  5      total := total + rec.i;
  6    END LOOP;
  7    dbms_output.put_line('Total is ' || total);
  8  END;
  9  /

Total is 500000500000

PL/SQL procedure successfully completed

Executed in 1,682 seconds

SQL> DECLARE
  2    total      NUMBER := 0;
  3    number_arr number_list;
  4  BEGIN
  5    number_arr := number_list();
  6    SELECT i BULK COLLECT INTO number_arr FROM numbers;
  7 
  8    FOR i IN number_arr.FIRST .. number_arr.LAST LOOP
  9      total := total + number_arr(i);
10    END LOOP;
11    dbms_output.put_line('Total is ' || total);
12  END;
13  /

Total is 500000500000

PL/SQL procedure successfully completed

Executed in 1,082 seconds

SQL>


1000000 kayıtlı bir tablo için bulk ile işlem yapmak 1.082 sn sürerken, bulk kullanmadan ise 1.682 sn de yapılmıştır.Bu da yaklaşık %35 perfrormans artışına denk düşmektedir.
mennan
21 Ekim 2006 12:37
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1078 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen