Oracle Parallel Execution Concept -1

Herkese Selam,

Bu ve bundan sonraki tahminen 1-2 yazımda sizlerle Oracle’ın parallel execution konseptinden bahsedicem. Bu yazı serisinin ilk bölümünde Parallel Execution’ının neyi adreslediğinden ve ne zaman kullanılması gerektiğinden daha sonraki yazılardada Oracle’ın parallel execution yeteneklerinden bahsedicem.

Parallel Execution özelliği yalnızca Oracle Enterprise edition’da var olan bir özellik bu yüzden, Oracle’ın bu yeteneğinden faydalanabilmek için veritabanımızın versyonu ve kapsamı oldukça önemli.

Oracle Parallel Execution özelliğini ilk olarak 7.1.6 sürümü ile duyurmuştu. Bu özellik o günden günümüze dek kapsamını ve fonksyonalitesini arttırarak ulaştı.

Önden bu 2 iki bilgiyi aktardıktan sonra şimdi konseptimizi anlatmaya başlayabiliriz.

Parallel Execution büyük ve seri çalışan görevleri aynı anda işlenebilir küçük parçalara ayıran bir yazılım aracıdır. Buradaki önemli nokta işlerimizin aslında parçalanabilecek ve parçalanma maliyetine katlanabilecek seviyede olması dikkat edilmesi gereken ana noktalardan biridir. Daha sonra bu konuya ayrıntılı bir şekilde değineceğim.

Aslında Parallel Execution’ını günlük hayatımızdan örnekler vererek daha iyi somutlaştırabiliriz. Örneğin yemek yaparken kullanılacak sebzeleri 2 kişinin bölüşüp eş zamanlı soyup temizlediğini düşünelim. Bu durumda iş tek kişinin yapacağından çok daha hızlı ve efektif olacaktır.

Temel yapılan işlemi teknik olarak ifade edecek olursak her bir task aynı anda çalıştıralabilecek küçük parçalara bölünüyor ve daha sonrasında concurrent olarak her part ayrı ayrı çalıştırılıyor. Bu işin sonucundada her partın çıktısı koordine edilerek nihai sonuca ulaşılıyor.

Örneğin büyük bir tabloya full table scan yapan bir sorguyu düşünelim. (Select * from tableBig). Bu sorguyu seri olarak çalıştırmayı denediğimizde sorgunun gerçekten uzun sürdüğünü gözlemleyeceğiz. Ancak çalışma mantığı olarak tablo içindeki datayı mantıksal olarak 4 ayrı parça bölsek ve her parçayı eş zamanlı gidip okusak ve sonucu koordine eden session’a döndürsek teorik olarak çalışma süremizin 4 kat daha artacağını gözlemleyebiliriz. Bu verdiğimiz örneğin Oracle implementasyonunu açıklayacak olursak;  her parçayı okuyacak iş parçası için Oracle arka tarafta ayrı bir session açar ve ilgili bölümü bu session’da işler, tüm sessionlar işlerini bitirdikten sonra sonuç ana session’a yani koordinasyonu sağlayacak session’a döndürülür. Koordinasyon işlemide bittikten sonra parallel sessionlar kapatılır ve ana session üzerinden nihai sonuç kullanıcıya döndürülür. (Bu örnek için toplam session sayısı 5).

Parallel Execution doğru kullanıldığı zaman database operasyonlarımızın katlar mertebesinde daha performanslı çalıştığını gözlemleyebiliriz. Ancak yanlış durumlarda  kullanılma ihtimalini göz önünde bulunduracak olursak, işlermizin seri çalışma performansından daha düşük sonuçlar elde ediceğimizide unutmamamız gerekmektedir.

Oracle’da  Aşağıdaki database operasyonları Parallel olarak çalışabilmektedir.

– Parallel Query
– Parallel DML(PDML)
– Parallel DDL
– Parallel Recovery
– Procedurel Parallelism

Bu konulara ayrıntılı bir şekilde sonraki yazılarımda değinicem ancak kısaca ne olduklarını açıklayacak olursak.

– Parallel Query: Sorgularımızın,işletim sistemi seviyesinde prosesler veya threadler kullanılarak gerçekleştirme özelliğidir. Full table scan, large sorts vb işlemler Oracle tarafından parallel olarak yapılabilmektedir.

– Parallel DML (PDML): Parallel Query ile aynı özellikleri gösterir ancak parallel işlem olarak insert, update, delete ve merge gibi datayı modifiye eden cümleleri parallel şekilde çalıştırmaya yarar. 

– Parallel DDL: Oracle büyük ddl operasyonlarınıda parallel olarak bu özelliği sayesinde yapabilmektedir. Index Rebuild, Create table as Select …. , gibi sık kullanılan DDL cümlelerinide parallel çalıştırabilmektedir.

– Parallel Recovery:  DB instancelarını veya DB’ye ait media file ları parallel geri getirerek, bu işlemlerin recovery sürelerini Oracle bu yeteneği sayesinde daha aşağılara çekebilmektedir.

– Procedurel Parallelism: Yazdığımız PL/SQL kod bloklarının parallel şekilde run edilmesini gerçekleştiren Oracle özelliğidir. Özellikle parallel çalışan uygulamlar yazdığımızda üzerinde önemle durulması gereken bir konudur.

Evet, bu yazıda Oracle’ın parallel Execution Concept’ine kısa bir giriş yaptık bundan sonraki yazılarda Parallel Execution ile ilgili burada kısa kısa bahsettiğimiz mevzulara derinlemesine inicez. Umarım başlangıç olarak farkındalık yaratmıştır.

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

Advertisements

About ... from Emrah METE

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

3 Responses to Oracle Parallel Execution Concept -1

  1. Pingback: Emrah METE

  2. Pingback: Oracle Parallel Execution Concept -2 | Emrah METE

  3. Pingback: Oracle Parallel Execution Concept -2 | Emrah METE

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