Oracle Parallel Execution Concept -2

Herkese Selam,

Bu yazıda sizlerle bir önceki yazıda başladığımız parallel execution concept’ine devam edicez. Bu bölümde daha çok Ne zaman Parallel Execution Özelliğini Kullanmalıyızın üzerinde durucaz. Bu yazının daha iyi anlaşılabilmesi için Oracle Parallel Execution Concept -1 yazısının önceden okunmasında fayda görüyorum.

PARALLEL EXECUTION NE ZAMAN KULLANILMALI 

Parallel Execution, saatlerce hatta günlerce süren proseslerin dakikalar mertebesinde bitmesini sağlayan gerçektende müthiş bir Oracle özelliği.Bu özellik sayesinde çok büyük proseslerimizi küçük paraçalara bölüp eş zamanlı çalıştırarak processing time’da önemli düşüşler meydana getirebiliyoruz. Ancak “Parallel Execution Ölçeklenebilir Değildir!”. Bu sebepten dolayı Parallel Execution’ı hangi durumlara kullandığımız büyük önem kazanmakta.

Parallel Execution, bir user’ın tüm database kaynaklarını tüketebilmesine izin veren bir yapıda tasarlanmıştır. İki farklı user’ın aynı database üzerine parallel işlem yapma istediğini düşündüğümüzde bir çatışma veya çelişki meydana gelecektir.

Sisteme eş zamanlı erişen user sayısı arttıkça açıkta bulunan kaynak(CPU-Memory-I/O) sayısı tükenmeye başlayacaktır. Bu durumda parallel execution yapma operasyonları çalıştırma yeteneği sorgulanabilir bir hal alıcaktır.

Yukarıdaki durumu bir öernek ile açıklayacak olursak. 2 Cpu’lu ve eşzamanlı 16 işlem yapabilen bir database sistemine, 16 eş zamanlı user’ın eriştiğiniğini düşünelim. Bu durumda sistemin CPU kayağı full utilize olacaktır(Her user’ın 1 birim işlem yaptığını varsayalım). User’lardan biri veya birkaçı parallel execution yapmak istediğinde sistemin o anlık iş yükü 16 yı geçeceğinden sistemde tıkanıklılıkk ve yavaşlılık söz konusu olacaktır. Seri çalışan işlerde, bu yük  boğulmasından etkilenerek daha geç bitmeleri dahi söz konu olabilir. Normal şartlar altında daha kısa sürecek tasklar sistemin aşırı yüklenmesinden dolayı daha yavaş bitecektir.

Parallel execution bazı durumlarda çok kötü sonuçlarda doğurabilir. Bunun nedeni tüm available kaynaklarımızın parallel execution opsyonu ile hızla tükenmeye başlayacak olmasıdır. Parallellik opsyonunu, uygulayacağımız sistemin karakteristiğine bakarak karar vermemiz doğru davranışlardan biri olacaktır. Örneğin OLTP sistemlere eş zamanlı erişen user sayısı OLAP sistemlerine göre çok yüksektir. OLTP sistemler karakteristik olarak response time odaklıdır ve yürütülen işlerin boyutu OLAP sistemlere göre daha küçük transactionlardır. OLTP sistemlerde parallel execution kullanılması tüm kaynakların hızlıca tükenmesine sebeiyet vermesinden dolayı, response time da büyük artışlar olacaktır. Eş zamanlı erişen user sayısının çok fazla olması kullanıcıların çok fazla beklemelerine sebebiyet vereceğinden dolayı genellikle OLTP sistemlerde parallel execution kullanımı tercih edilmez. Burada dikkat edilmesi gereken diğer önemli noktada, parallel execution uygulayacağımız task’ın büyüklüğü. OLTP sistemlerdeki transacionların boyutu çok küçük olduğundan çok Parallel Execution’ın bu sistemlerde faydadan çok zararı  bile olabilir. Paralel yürüteceğimiz operasyonların büyük olması gerekmektedir. Aksi takdirde parallel işlem yürütmenin yönetim maliyeti toplam maliyeti geçip sistem için extra bir overhead getirebilir.

Parallel Execution  kararı almadan önce aşağıdaki 2 madde üzerinde düşünülmelidir.

1) Operasyonum büyük bir task mı? (Ör: 50 Gb lık bir datayı load etmek.)

2) Yeteri kadar available kaynağım varmı? (50 GB’lık datayı full table scan yapacak yeterli CPU kaynağım varmı? 50 GB data farklı fiziksel disklere dağılmış olabilir, bu yüzden birden çok eş zamanlı okuma yapabileceğim I/O channellarım varmı?)

Eğer operasyonumuz küçükse daha öncede bahs ettiğimiz gibi parallel execution’ın yönetim maliyeti, seri çalışma maliyetini geçip sistemimize extra yük getirip mevcut işimizin yavaşlamasına neden olacaktır. Bu duruma istinaden küçük işleri seri yapmak, parallel yapmaktan daha hızlı ve olumlu sonuçlar doğuracaktır.

Eğer operasyonumuz büyük ve parçalanabilir bağımsız bölümlerden oluşuyorsa, iş büyük olduğundan dolayı yönetim maliyeti göz ardı edilebilecek boyutlarda kalacaktır. Bu tarz işler parallel gerçekleştirmek performansımızı katlar mertebesinde geliştirecektir. Ancak dikkat edilmesi gerekn bir diğer konuda available kaynaklarımızın yeterli olması gerektiğidir. Aksi takdirde sistemimize kaldıramıcağından fazla yük bindirmiş oluruz ve mevcutta yürütülen işlemlerinde yavaş bitmesine sebebiyet verebiliriz.

Taskımız büyük, available kaynaklarımızda yeterli ise Parallel Execution için optimum ortamı sağlamış oluruz ve yavaş çalışan büyük tasklarımızın performansını ciddi şekilde arttırabiliriz.

Evet, bu yazıda Oracle’ın parallel Execution Concept’ine devam ettik bundan sonraki yazılarda Parallel Execution concept ile ilgili farklı operasyonlardan bahs edicez. Umarım faydalı olmuştur.

Kaynak :“Expert Oracle Database Architecture 2011″, Tom KYTE

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Oracle, Root 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