14 Ağustos 2008 Perşembe

PARALLEL EXECUTION

Parallel Execution nasıl çalışıyor?

Birazdan örnektede göreceğimiz gibi verdiğimiz paralellik komularıyla sql sorgumuzu processlere(unıt) ayırıyoruz.Oracle paralel bir sql sorgusunu çalıştırırken bir çok process eş zamanlı olarak çalıştırıyor.Sorguyu parçalara ayırma mantığıyla tek bir process'in bir işi yapması yerine birden cok process bir iş için çalışıyor. Yanlız bunları yaparken dikkat etmemiz gereken konulardan biri de şu : "Eğer sorgularımızı paralel çalıştırmak istiyorsak yeterli disk alanına ve CPU ya ihtiyacımız var. "

Parallel Execution kullanılmadığında tek bir server process yapması gereken işleri sırasıyla yapıyor(full table scan) fakat sorguya paralellik verdiğimizde bir çok parallel execution server çalışıyor.Tablo dinamik olarak kordinatör tarafından execution anında kararlaştırılarak, parçalara bölünüyor ve her bir parça, bir parallel execution server tarafından işleniyor. Parçaların da bir araya gelmesi bize granülleri veriyor. Eğer elimizde bircok granül varsa , sırasıyla bir granül paralel işleniyor ve execution server bu granülü okumayı bitirdikten sonra diğer granüle geçiyor. Bu işlem elimizde birçok ufak processlerden oluşmuş granüller bitene kadar devam ediyor.

Sunumu sırasında arkadaşımız "A.Fuat SUNGUR" parallel execution 'ın gerekliliğine dair güzel bir örnek vermişti. Düşünün ki bir yazıyı paragraf paragraf özetleyeceksiniz ve eğer bu özeti parallel execution mantığıyla her kişiye bir paragraf düşecek şekilde kişilere paylaştırırsanız anlamsız olur.Bunu bir kişinin yapması daha mantıkıdır. Bu güzel örnekten
yola cıkarak SQL 'de de execution süresi kısa olan, az veri döndüren sorgularda Paralel Execution kullanmamalıyız. Peki ne zaman kullanmalıyız Parallel Execution'ı ?

  • Büyük boyutlu table scan , join , index scan yapmamız gerektiğinde ,
  • Büyük boyutlu indexler yaratmamız gerektiğinde ,
  • Fazla sayıda insert , update , merge veya delete olduğunda ,
  • Büyük boyutlu datayı sort etmemiz gerektiğinde kullanışlıdır.

Bu kullanımlarla :
  1. Saatlerce sürecek bir işi daha kısa bir zaman diliminde bitirebilirsiniz.
  2. Kaynakları daha verimli kullanırsınız (cpu,memory...)
ALTER table bigtab NOPARALLEL;
/
SELECT * FROM bigtab ;
--execution time=76.192 seconds


ALTER table bigtab PARALLEL;
/
SELECT /*+ PARALLEL(T 16) */ owner,object_name FROM bigtab T ;
--execution time=22.703 seconds

gzdalhan@gmail.com

Hiç yorum yok: