DBMS Eşzamanlılık Kontrolü: Zaman Damgası ve Kilit Tabanlı Protokoller
Eşzamanlılık Kontrolü Nedir?
Eşzamanlılık kontrolü Veritabanı Yönetim Sisteminde, birbirleriyle çakışmadan eş zamanlı işlemleri yönetme prosedürüdür. İlgili Veritabanının veri bütünlüğünü ihlal etmeden doğru sonuçlar üretmek için Veritabanı işlemlerinin eş zamanlı ve doğru bir şekilde gerçekleştirilmesini sağlar.
Tüm kullanıcılar yalnızca veri okuyorsa eşzamanlı erişim oldukça kolaydır. Birbirlerine müdahale etmeleri mümkün değil. Her ne kadar pratik bir Veritabanı için READ ve WRITE işlemlerinin bir karışımı olsa da, eşzamanlılık bir zorluktur.
DBMS Eşzamanlılık Kontrolü, çoğunlukla çok kullanıcılı bir sistemde meydana gelen bu tür çatışmaları ele almak için kullanılır. Bu nedenle, Eşzamanlılık Kontrolü, aynı verilere erişim gerektiren iki veya daha fazla veritabanı işleminin aynı anda yürütüldüğü bir Veritabanı Yönetim Sisteminin düzgün çalışması için en önemli unsurdur.
Eşzamanlılığın olası sorunları
DBMS Eşzamanlılık Denetimi yöntemini kullanırken karşılaşabileceğiniz bazı sorunlar şunlardır:
- Kayıp Güncellemeler birden fazla işlem aynı satırı seçtiğinde ve seçilen değere göre satırı güncellediğinde ortaya çıkar
- Taahhüt edilmemiş bağımlılık sorunları, ikinci işlem başka bir işlem tarafından güncellenen bir satırı seçtiğinde ortaya çıkar (kirli okuma)
- Tekrarlanamayan Okuma ikinci bir işlem aynı satıra birkaç kez erişmeye çalıştığında ve her seferinde farklı verileri okuduğunda meydana gelir.
- Yanlış Özet sorunu bir işlem, tekrarlanan bir veri öğesinin tüm örneklerinin değerinin özetini aldığında ve ikinci işlem, söz konusu belirli veri öğesinin birkaç örneğini güncellediğinde meydana gelir. Bu durumda ortaya çıkan özet doğru bir sonucu yansıtmamaktadır.
Eşzamanlılık yöntemini neden kullanmalısınız?
Eşzamanlılık kontrol yöntemini kullanmanın nedenleri DBMS'dir:
- Çakışan işlemler arasında karşılıklı hariç tutma yoluyla İzolasyonu uygulamak
- Okuma-yazma ve yazma-yazma çakışması sorunlarını çözmek için
- Yürütme engellerini sürekli koruyarak veritabanı tutarlılığını korumak
- Sistemin eşzamanlı işlemler arasındaki etkileşimi kontrol etmesi gerekiyor. Bu kontrol eşzamanlı kontrol şemaları kullanılarak gerçekleştirilir.
- Eşzamanlılık kontrolü serileştirilebilirliğin sağlanmasına yardımcı olur
Örnek E-posta
Aynı anda elektronik büfelere giden iki kişinin aynı film ve aynı gösterim saati için sinema bileti aldığını varsayalım.
Ancak o sinema salonunda film gösterisi için yalnızca bir koltuk kaldı. DBMS'de eşzamanlılık kontrolü olmadan, her iki sinemaseverin de bir bilet satın alması mümkündür. Ancak eşzamanlılık kontrol yöntemi buna izin vermez. Her iki sinemasever de film oturma veritabanında yazılı bilgilere hâlâ erişebilir. Ancak eşzamanlılık kontrolü yalnızca işlem sürecini ilk tamamlayan alıcıya bir bilet sağlar.
Eşzamanlılık Kontrol Protokolleri
Farklı eşzamanlılık kontrol protokolleri, izin verdikleri eşzamanlılık miktarı ve yükledikleri ek yük miktarı arasında farklı avantajlar sunar. DBMS'deki Eşzamanlılık Kontrol teknikleri şunlardır:
- Kilit Tabanlı Protokoller
- İki Fazlı Kilitleme Protokolü
- Zaman Damgası Tabanlı Protokoller
- Doğrulamaya Dayalı Protokoller
Kilit Tabanlı Protokoller
Kilit Tabanlı Protokoller DBMS'de, bir işlemin uygun bir kilit edinene kadar veriyi Okuyamayacağı veya Yazamayacağı bir mekanizmadır. Kilit tabanlı protokoller, belirli bir işlemi tek bir kullanıcıya kilitleyerek veya izole ederek DBMS'de eşzamanlı işlemler için eşzamanlılık sorununu ortadan kaldırmaya yardımcı olur.
Bir kilit, bir veri öğesiyle ilişkilendirilmiş bir veri değişkenidir. Bu kilit, veri öğesinde gerçekleştirilebilecek işlemleri belirtir. DBMS'deki kilitler, eş zamanlı işlemlerle veritabanı öğelerine erişimi senkronize etmeye yardımcı olur.
Tüm kilitleme istekleri eşzamanlılık kontrol yöneticisine yapılır. İşlemler yalnızca kilitleme isteği kabul edildiğinde devam eder.
İkili Kilitler: Bir veri öğesindeki İkili kilit, kilitli veya kilidi açılmış durumlar olabilir.
Paylaşılan/özel: Bu tip kilitleme mekanizması, DBMS'deki kilitleri kullanımlarına göre ayırır. Bir yazma işlemini gerçekleştirmek için bir veri öğesi üzerinde bir kilit elde edilirse buna özel kilit adı verilir.
1. Paylaşımlı Kilit (S):
Paylaşılan kilit aynı zamanda Salt Okunur kilit olarak da adlandırılır. Paylaşılan kilit ile veri öğesi işlemler arasında paylaşılabilir. Bunun nedeni, hiçbir zaman veri öğesindeki verileri güncelleme iznine sahip olmayacak olmanızdır.
Örneğin, iki işlemin bir kişinin hesap bakiyesini okuduğu bir durumu düşünün. veritabanı paylaşımlı kilit yerleştirerek okumalarını sağlayacak. Ancak başka bir işlem o hesabın bakiyesini güncellemek isterse, paylaşımlı kilit okuma işlemi bitene kadar bunu engeller.
2. Özel Kilit (X):
Exclusive Lock ile bir veri öğesi yazılabileceği gibi okunabilir. Bu özeldir ve aynı veri öğesi üzerinde aynı anda tutulamaz. X-lock, lock-x talimatı kullanılarak istenir. İşlemler 'yazma' işlemini tamamladıktan sonra veri öğesinin kilidini açabilir.
Örneğin, bir işlemin bir kişinin hesap bakiyesini güncellemesi gerektiğinde. Üzerine X lock yerleştirerek bu işleme izin verebilirsiniz. Bu nedenle ikinci işlem okumak veya yazmak istediğinde özel kilit bu işlemi engeller.
3. Basit Kilit Protokolü
Bu tür kilit tabanlı protokoller, işlemlerin çalışmaya başlamadan önce her nesne üzerinde bir kilit elde etmesine olanak tanır. İşlemler 'yazma' işlemini tamamladıktan sonra veri öğesinin kilidini açabilir.
4. Ön Talep Kilitleme
Ön talep kilitleme protokolü, operasyonların değerlendirilmesine ve bir yürütme sürecini başlatmak için gereken gerekli veri öğelerinin bir listesinin oluşturulmasına yardımcı olur. Tüm kilitlerin verildiği durumda işlem yürütülür. Daha sonra tüm işlemleri bitince tüm kilitler açılır.
Açlık
Açlık, bir işlemin kilit alabilmesi için belirsiz bir süre beklemesi gereken durumdur.
Açlığın nedenleri şunlardır:
- Kilitli öğeler için bekleme düzeni düzgün yönetilmediğinde
- Kaynak sızıntısı durumunda
- Aynı işlem defalarca mağdur olarak seçiliyor
çıkmaz
Kilitlenme, iki veya daha fazla işlemin bir kaynağı serbest bırakmak için birbirlerini beklemesi veya dairesel bir zincirde ikiden fazla işlemin kaynağı beklemesi gibi belirli bir durumu ifade eder.
İki Fazlı Kilitleme Protokolü
İki Fazlı Kilitleme Protokolü 2PL protokolü olarak da bilinen, DBMS'de eşzamanlılık denetiminin bir yöntemidir ve işlem verilerine bir kilit uygulayarak serileştirilebilirliği garanti eder ve diğer işlemlerin aynı anda aynı verilere erişmesini engeller. İki Aşamalı Kilitleme protokolü, DBMS'deki eşzamanlılık sorununu ortadan kaldırmaya yardımcı olur.
Bu kilitleme protokolü, bir işlemin yürütme aşamasını üç farklı bölüme ayırır.
- İlk aşamada işlem yürütülmeye başladığında ihtiyaç duyduğu kilitler için izin gerektirir.
- İkinci kısım, işlemin tüm kilitleri elde ettiği yerdir. Bir işlem ilk kilidini açtığında üçüncü aşama başlar.
- Bu üçüncü aşamada işlem yeni kilit talep edemez. Bunun yerine yalnızca edinilen kilitleri serbest bırakır.
İki Aşamalı Kilitleme protokolü, her işlemin iki adımda kilitleme veya kilit açma isteğinde bulunmasına olanak tanır:
- Büyüyen Aşama: Bu aşamada işlem kilit alabilir ancak hiçbir kilidi açamaz.
- Küçültme Aşaması: Bu aşamada, bir işlem kilitleri serbest bırakabilir ancak yeni kilit alamayabilir
2PL protokolünün serileştirilebilirlik sunduğu doğrudur. Ancak, çıkmazların olmayacağını garanti etmez.
Yukarıda verilen diyagramda, yerel ve global çıkmaz algılayıcıların çıkmazları aradığını ve işlemleri başlangıç durumlarına döndürerek bunları çözdüğünü görebilirsiniz.
Sıkı İki Fazlı Kilitleme Yöntemi
Sıkı-İki fazlı kilitleme sistemi neredeyse 2PL'ye benzer. Tek fark, Strict-2PL'nin kullandıktan sonra hiçbir zaman kilidi açmamasıdır. Tüm kilitleri taahhüt noktasına kadar tutar ve işlem bittiğinde tüm kilitleri tek seferde açar.
Merkezi 2PL
Centralized 2 PL'de kilit yönetimi sürecinden tek bir site sorumludur. Tüm DBMS için yalnızca bir kilit yöneticisi vardır.
Birincil kopya 2PL
Birincil kopya 2PL mekanizması, birçok kilit yöneticisi farklı sitelere dağıtılır. Bundan sonra, belirli bir kilit yöneticisi, bir dizi veri öğesi için kilidi yönetmekten sorumludur. Birincil kopya güncellendiğinde değişiklik ikincil kopyalara yayılır.
Dağıtılmış 2PL
Bu tür iki aşamalı kilitleme mekanizmasında Kilit yöneticileri tüm sahalara dağıtılır. Söz konusu sitedeki verilere yönelik kilitlerin yönetilmesinden sorumludurlar. Hiçbir veri kopyalanmazsa, birincil kopya 2PL'ye eşdeğerdir. Dağıtılmış 2PL'nin iletişim maliyetleri birincil kopya 2PL'den oldukça yüksektir
Zaman Damgası Tabanlı Protokoller
Zaman damgası tabanlı Protokol DBMS'de, eşzamanlı işlemlerin yürütülmesini serileştirmek için Sistem Saatini veya Mantıksal Sayacı zaman damgası olarak kullanan bir algoritmadır. Zaman damgası tabanlı protokol, çakışan her okuma ve yazma işleminin zaman damgası sırasına göre yürütülmesini sağlar.
Bu yöntemde her zaman eski işleme öncelik verilir. İşlemin zaman damgasını belirlemek için sistem saatini kullanır. Bu en yaygın kullanılan eşzamanlılık protokolüdür.
Kilit tabanlı protokoller, yürütülecekleri çakışan işlemler arasındaki sırayı yönetmenize yardımcı olur. Zaman damgası tabanlı protokoller, bir işlem oluşturulur oluşturulmaz çakışmaları yönetir.
Örnek:
Suppose there are there transactions T1, T2, and T3. T1 has entered the system at time 0010 T2 has entered the system at 0020 T3 has entered the system at 0030 Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Avantajlar:
- Programlar tıpkı 2PL protokolleri gibi serileştirilebilir
- İşlem bekleme derdi yok, tıkanıklık yaşanma ihtimali ortadan kalkıyor!
Dezavantajları:
Aynı işlemin yeniden başlatılması ve sürekli olarak iptal edilmesi halinde açlıktan ölmek mümkündür
Doğrulama Tabanlı Protokol
Doğrulama tabanlı Protokol DBMS'de İyimser Eşzamanlılık Kontrol Tekniği olarak da bilinen, işlemlerde eşzamanlılığı önlemeye yönelik bir yöntemdir. Bu protokolde, verinin kendisi yerine işlem verilerinin yerel kopyaları güncellenir, bu da işlemin yürütülmesi sırasında daha az müdahaleye neden olur.
Doğrulama Tabanlı Protokol aşağıdaki üç aşamada gerçekleştirilir:
- Okuma Aşaması
- Doğrulama Aşaması
- Yazma Aşaması
Okuma Aşaması
Okuma Aşamasında, veritabanındaki veri değerleri bir işlem tarafından okunabilir ancak yazma işlemi veya güncellemeler gerçek veritabanına değil yalnızca yerel veri kopyalarına uygulanır.
Doğrulama Aşaması
Doğrulama Aşamasında, işlem güncellemelerinin veritabanına uygulanması sırasında serileştirilebilirlik ihlali olmadığından emin olmak için veriler kontrol edilir.
Yazma Aşaması
Yazma Aşamasında doğrulama başarılı olursa güncellemeler veri tabanına uygulanır, aksi takdirde; güncellemeler uygulanmaz ve işlem geri alınır.
İyi Eşzamanlılık Protokolünün Özellikleri
İdeal bir eşzamanlılık denetimi DBMS mekanizmasının aşağıdaki hedefleri vardır:
- Site ve iletişim hatalarına karşı dayanıklı olmalıdır.
- Maksimum eşzamanlılığa ulaşmak için işlemlerin paralel yürütülmesine olanak tanır.
- Depolama mekanizmaları ve hesaplama yöntemleri, yükü en aza indirecek kadar mütevazı olmalıdır.
- İşlemlerin atomik eylemlerinin yapısına bazı kısıtlamalar getirilmelidir.
ÖZET
- Eşzamanlılık kontrolü prosedürdür DBMS Birbirleriyle çakışmadan eş zamanlı operasyonları yönetmek için.
- Kayıp Güncellemeler, kirli okuma, Tekrarlanamayan Okuma ve Yanlış Özet Sorunu, eşzamanlılık kontrolünün eksikliği nedeniyle karşılaşılan sorunlardır.
- Kilit Tabanlı, İki Aşamalı, Zaman Damgası Tabanlı, Doğrulama Tabanlı Eşzamanlılık işleme protokollerinin türleridir
- Kilit Paylaşılan (S) veya Özel (X) olabilir
- 2PL protokolü olarak da bilinen İki Fazlı kilitleme protokolü, işlemin kilitlerinden birini serbest bıraktıktan sonra bir kilit edinmesini gerektirir. Büyüyen ve küçülen 2 fazı vardır.
- Zaman damgası tabanlı algoritma, eşzamanlı işlemlerin yürütülmesini serileştirmek için bir zaman damgası kullanır. Protokol şunları kullanır: Sistem Saati veya Mantıksal Sayım bir Zaman Damgası.