Bir veritabanı sisteminde SQL çalıştırdığımız zaman arka planda nelerin olduğunu bilmek önemli. Bilindiği takdirde örneğin “bind variable kullanımı”, “bulk işlemler” vb. durumlarda Oracle tarafında olan işlemlerin nasıl etkilendiği farkında olunacak ve buna göre bir yaklaşım belirlemek mümkün olacaktır.

SQL işlemleri 2 ana başlık altında toplanır :

  • DDL(Data Definition Language) : “Data Dictionary” üzerinde değişikliğe sebeb olan create, drop, alter gibi işlemlerdir.
  • DML(Data Manipulation Language) : Veriye ulaşmak ya da değiştirmek amacıyla yapılan işlemlerdir.(Select, update,delete…vs.)

SQL Processing işlemi parsing, optimization, row source generation ve execution adımlarından oluşur. Sql ifadesine göre bazı adımlar atlanabilir.

SQL Parsing

Yukarıdaki diyagramda gözüktüğü üzere SQL işlemesinin ilk aşaması SQL sorgusunun parse edilmesidir. Parse etmeyi şöyle açıklayabilirim. Bir uygulamaya ya da bir operasyona anlamlı gelecek şekle getirmektir. Binary bir dosyayı parse ederek CSV formatında bir dosyaya çevirirseniz, sizin için anlamlı bir hale gelecektir ancak öncelikle parser’ın binary dosyanın dilinden anlıyor olabilmesi ve sizin elinizde bunu tercüme edecek bir dokümantasyonun bulunması gerekmektedir. Oracle’ın yaptığıda aslında bundan çok farklı değildir. Oracle da kendisi için anlamlı gelecek bir format oluşturmaya çalışır fakat sistematiği biraz farklıdır.

Bir sql ifadesi çalıştırılacağı zaman veritabanı üzerinde parse call talebi ile veritabanı üzerinde cursor açılır. Bu cursor session bazlı açılır ve private SQL area üzerinde tutulur. Cursor ve private SQL area program global area (PGA) içindedir. Parse call işlemi 3 aşamadan oluşur.

  • Syntax check
  • Semantic check
  • Shared pool check

(continue reading…)

Loading