Oracle Transaction Isolation Level And Lock
Herkese Merhabalar Bu Yazımda Oracle Isolation Seviyeleri ve Lock Nedir Anlatmaya Çalışacağım Umarım Faydalı Olur Hadi Başlayalım
Isolation Nedir
Eş Zamanlı Çalışan Transactionların Birbirinden Etkilenmemesi İçin Kurulan Yapıdır Diyebilirim Kısaca :) Tabii ki Bu Konu Lock ile Alakalıdır Lockların Nasıl ve Ne Kadar Tutulacağı Karar Verilir.
Isolation Türleri Nelerdir
Read Uncommited: En Alt Isolation Seviyesidir, Başka Bir Commit Edilmemiş TS Çalışırken Diğer TS Veriyi Okuyabilir
Read Commited: Güncellenen Veriler Commit Edilene Kadar Okunamazlar Dirty Read’in Önüne Geçilir Ama Araya Başka TS’ler Girebilir No Repatable veya Phanton Oluşmasına Sebep Olur
Repeatable: Güncellenen Veriler Commit Edilene Kadar Okunamazlar ve Araya Başka TS Giremez
Seriazable: En Üst Isolation Seviyesidir , Commit Edilmemiş Veri Okunamaz, Insert Edilemez veya Güncellenemez
Meydana Gelecek Sorunlar Neler Peki
Phantom Read: Bir TS Kayıt Ekleme veya Silme İşlemi Yaparken Diğer TS’de Okuma Yapsın Her Gördüğü veya Göremediği Satırlar Phantom ile İfade Edilir
Dirty Read : Başka Bir Kullanıcı TS Başlatırken Daha Commit Etmeden Diğer Kullanıcı TS Kapsamında ki Dataları Okumasıdır
No-Repeatable : Bir TS İşleminin Aynı Anda İki Kez Farklı Değer Vermesidir Nedeni Elimiz de 2 Adet TS Olsun, Biri Veri Çekerken Diğeri de Verileri Güncellesin Veri Çeken TS Bittikten Sonra Güncelleyen TS’nin Commit Etmesi Bizi Farklı Değerle Karşılayacaktır :)
Yukarıda ki Isolation Türleri ANSI Standartlarına Göreydi Gelelim Oracle Veri Tabanının Isolation Türlerine
Oracle Yukarıda ki ANSI Standartlarından Read Commited ve Seriazable Seviyelerini Desteklemektedir
Bunun Dışında Oracle Farklı Isolation Seviyelerinin Olması da MVCC Yapısının Yer Almasından Dolayıdır
MVCC’de Nedir Dediğinizi Duyar Gibiyim Hemen Açıklayalım:
Veri Tabanına Eş Zamanlı Erişim Sağlamaya Yani Okuma Yazma İşlemlerinin Sorunsuz Yapılması Adına Çıkarılan Bir Modeldir
Serializable Isolation Level :Oracle, diğer işlemlerin bir sorgu tarafından okunan verileri değiştirmesini engellemediğinden, bu veriler sorgunun iki yürütmesi arasındaki diğer işlemlerle değiştirilebilir. Böylece, belirli bir sorguyu iki kez çalıştıran bir işlem hem yinelenemeyen okuma hem de hayaletlerle karşılaşabilir.
Read Only Isolation Level :
Salt okunur işlemler, yalnızca işlem başladığında gerçekleştirilen değişiklikleri görür ve izin vermez , ve deyimler.INSERTUPDATEDELETE
Read Committed Isolation Level :Bu, varsayılan işlem yalıtım düzeyidir. Bir işlem tarafından yürütülen her sorgu, yalnızca sorgu başlamadan önce işlenen verileri görür (işlem değil). Oracle sorgusu kirli (işlenmemiş) verileri asla okumaz.
Lock Nedir
Aynı Andan Birden Fazla Transaction İşleminin Veriye Erişmeye Çalışırken Diğer Transaction İşlemlerinin Kilitlenmesini Sağlamaya Yaran Yapıdır
DML locks : Data Üzerinde DML İşlemi Çalışıyorsa Bir Başka DML İşlemini Kabul Etmez Ta ki Commit veya Rollback İşlemi Yapılana Kadar Default Olarak ROW Bazındadır Tablo Olarak Ayarlanabilir
DDL locks: Data Üzerinde DDL İşlemi Çalışıyorsa Bir Başka DDL İşlemini Kabul Etmez Ta ki Commit veya Rollback İşlemi Yapılana Kadar
System Locks: Veri Tabanı Sistem Geneli Alakalı Locklar Diyebilirim
DML Locks Türleri
Row Locks : Tek Bir Satirda Oluşan Lock Türüdür
Table Locks : Tablo Üzerinde DDL ve DML İşlemlerini Ayırmak İçin Kullanılan Lock
Table Locks Türleri
Row Share : Tablonun Çoklu Erişimine İzin Verir Ama Tablonun Tamamen Locklanmasına İzin Vermez
Share Table Lock : Tablo Çoklu Okunmaya İzin Verilir Ama DML Kabul Etmez
Share Row Exclusive Table Lock : Tablo Okunmasına İzin Verilir Ama Başka Kullanıcıların Lock Atmasına İzin Vermez
Exclusive Table Lock : Sadece Okumaya İzin Veren Lock Türüdür DML Kabul Etmez
Umarım Faydalı Olmuştur Beğenmeyi ve Takip Etmeyi Unutmayın :)