Oracle Hafıza Mimarisi
Oracle veri tabanı mimarisinin önemli yapılarından birisi hafıza (bellek) mimarisidir. En sık erişilen verilerin disk yerine bellekten getirilmesi prensibi ile çalışması , performans kazanımı açısından çok önemlidir.
Bellek yapısı denildiğinde başlıca iki alan akla gelir:
- Sistem Global Alanı (System Global Area – SGA)
- Program Global Alanı (Program/Process Global Area – PGA)
Sistem Global Alanı (System Global Area – SGA)
- Paylaşılmış bellek alanı (shared memory) olarak da bilinir.
- Veritabanına bağlanan tüm oturumlar (session) SGA’yı ortak kullanır.
- Sunucu (server) ve arka plan işlemleri (background processes), SGA içinde yerleşmez, ayrıca bellek alanı tahsis edilir.
- Her veritabanının kendine ait bir SGA alanı vardır. Bu alan Oracle VT tarafından sunucudaki fiziksel bellek üzerinden tahsis edilir (allocate). Ve “veritabanı kapatılıncaya kadar” başka uygulama/işlem tarafından kullanılmasına izin verilmez.
- SGA alanı büyüklüğü VT yöneticisi tarafından da yönetilebilir, Oracle tarafından da otomatik olarak yönetilebilir.
SGA’nın içindeki bileşenler:
- Database Buffer Cache: Veri dosyalarından elde edilen veri bloklarını saklar. Değişikliğe uğrayan bloklar belirli zaman aralıklarında veri dosyalarına aktarılır.
- Redo Log Buffer: Instance’ın veritabanında yaptığı değişikliklerin kaydedildiği bölgedir. Gerektiğinde recovery işleminde kullanılmak üzere bu bilgiler belirli zaman aralıklarında redo log dosyalarına aktarılır. VT’de çalıştırılan her DDL ve DML işlemi ile ilgili kayıt bilgisi tutar. Bu bilgilere «redo» ismi verilir.
- Shared Pool: En son çalıştırılan sorgu ve veri kütüphanesinden en son kullanılan veri, parse ve derlenmiş PL/SQL kodları gibi bilgileri saklar.
- Large Pool: Backup/Recovery işlemleri ve I/O sunucu işlemleri gibi bazı büyük işlemler için büyük miktarda hafıza tahsisi gerektiğinde kullanılan bölgedir.
- Java Pool: Java Sanal Makinesi (JVM) tarafından kullanılan tüm oturum-bazlı Java kodu ve verisini saklar.
- Streams Pool: Oracle streams (verinin ve olayların veri akımları şeklinde iki veritabanı arasında yada aynı veritabanı içinde paylaşılmasını sağlar) tarafından kullanılan ve kuyruk mesajlarının (queue messages) kaydedildiği alandır. Varsayılan olarak boyutu sıfırdır.
Program/Process Global Area (PGA)
- PGA, bir sunucu işlemi veya bir arkaplan işlemi için veri ve kontrol bilgilerini içeren hafıza bölgesidir.
- PGA alanı, işlem başlayınca sunucu fiziksel belleğinden tahsis edilir. İşlem bittiğinde ise tekrar serbest bırakılır.
- Birçok process tarafından paylaşılabilen SGA’nın tersine, PGA sadece kendisini başlatan process tarafından kullanılabilir.
PGA’nın bazı önemli bileşenleri:
- Özel SQL Alanı (Private SQL Area): Parse edilen SQL cümlesinin bilgisini (değişken değerleri, sorgu çalışma durum bilgisi, sorgu çalışma alanları) tutar.
- SQL Çalışma Alanları (SQL Work Areas): Yoğun bellek işlemleri için kullanılan bir alandır. ORDER BY gibi veya JOIN gibi yoğun bellek işlemleri sırasında kullanılır.
- Oturum Belleği (Session Memory): Oturuma özel değişkenlerin tutulduğu alandır.