Oracle Transaction Isolation Level And Lock

İbrahim Yıldız
3 min readSep 22, 2022

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 :)

--

--

No responses yet