VERİTABANI PROGRAMLAMA - Ünite 5: Hareket Yönetimi ve Eşzamanlılık Kontrolü Özeti :
PAYLAŞ:Ünite 5: Hareket Yönetimi ve Eşzamanlılık Kontrolü
Hareket ve Özellikleri
Hareket, temel olarak daha küçük parçalara bölünemeyen en küçük işlem grubudur. Veritabanı üzerinde gerçekleştirilen bir dizi SQL işlemini (SELECT,INSERT,UPDATE ve DELETE) kapsayan işlemler grubuna verilen isimdir.
Bölünmezlik
Hareket bloğu içinde yer alan SQL ifadelerin tamamının başarılı olarak çalıştırılması ya da hiçbirinin çalıştırılmadan hareket bloğu başlangıç durumuna geri dönülmesidir.
Tutarlılık
Veritabanında gerçekleştirilen işlemler sonucunda oluşan yeni veriler arasındaki tutarlılığı ifade eder.
İzolasyon
İzolasyon, veri erişim kontrolü amacıyla kullanılan bir mekanizmadır.
Devamlılık
Tamamlanmış olan ya da devam eden hareketlerin gerçekleştirdiği veri değişikliklerinin VTYS’de bir arıza meydana gelse bile kalıcı olarak kaydedildiğinden emin olunması beklenmektedir. MS SQL Server VTYS’nin en önemli özelliklerinden biri, bu amaçla hareket günlüğü dosyası tutmasıdır.
Hareket Yönetimi
MS SQL Server VTYS, otokayıt (autocommit), açık (explicit) ve örtük (implicit) olmak üzere üç farklı modda hareket desteği sağlamaktadır.
Otokayıt Hareket
MS SQL Server VTYS’nin varsayılan hareket yönetim modudur.
Açık Hareket
Açık hareketler kullanıcıların kendilerinin başlatıp sonlandırdığı hareket bloklarıdır.
Eş Zamanlılık ve Eş Zamanlılık Problemleri
Günümüzde birçok kurumsal uygulama, çok sayıda kullanıcı tarafından kullanılmaktadır. Kullanıcıların sahip olduğu cihazların çeşitliliği ise oldukça fazladır. Bu sebeplerden dolayı kurumsal uygulama diğer uygulamalara, hizmetlere veya raporlama ihtiyaçlarına aynı anda cevap verme yeteneğine sahip olmalıdır. Bu uygulamaların verileri saklamak için kullandıkları VTYS, birbirinden farklı hizmetlerin veri okuma ve veri yazma ihtiyaçlarını aynı anda karşılayabilmelidir. VTYS’lerde eş zamanlılık kavramı, birden fazla oturum üzerinden aynı kaynaklara erişimi ve kullanımı tanımlamaktadır.
Oturum bir veritabanına farklı kullanıcılar tarafından gerçekleştirilen erişimdir.
Kirli Okuma
Bir hareket tarafından değiştirilmiş fakat kalıcı olarak veritabanına kaydedilmemiş bir verinin başka bir hareket tarafından geçerli bir veri gibi okunması kirli okuma olarak ifade edilmektedir.
Tekrarlanamayan Okuma
Bir veri ya da veri grubuna bir hareket içinde birden fazla kez erişim gerçekleştirilebilir. Bu erişimler arasında eş zamanlı olarak başka bir hareket güncelleme veya silme işlemi gerçekleştirebilmektedir. Bu durumda tekrarlanamayan okuma problemi ile karşı karşıya kalınmış olunmaktadır.
Hayalet Okuma
Aynı hareket içinde ve aynı tablo üzerinde aynı WHERE ifadesi ile iki farklı sorgulama yapıldığını varsayalım. Bu iki sorgulama arasında eş zamanlı olarak başka bir hareket, okunan aralık içindeki veri kümesine yeni bir kayıt eklemiş olsun. Bu durumda ikinci sorgulamada birinciye göre daha fazla kayıt okunmuş olur. Fazla kayıt okuma işlemine hayalet okuma adı verilmektedir.
İzolasyon Seviyeleri
İzolasyon düzeyleri, eş zamanlı olarak çalışan hareketlerin birbirlerini nasıl etkilemesi gerektiğinin belirtilmesinde kullanılmaktadır.
Kaydedilmiş okuma varsayılan MS SQL Server VTYS izolasyon düzeyidir. Kaydedilmemiş veri değişiklikleri okunamaz. Sorgu esnasında paylaşılan kilitler kullanılır ve bir hareket okuma gerçekleştirirken eş zamanlı olarak başka bir hareket aynı veri üzerinde değişiklik gerçekleştiremez. Aynı tablo üzerinde veri ekleme ve değişikliğine izin verilir. Bu izolasyon düzeyi kirli okuma problemine engel olur. Fakat, tekrarlanamayan okuma ve hayalet okuma eş zamanlılık problemlerine sebep olabilmektedir.
Kaydedilmemiş okuma , en düşük kısıtlamaya sahip izolasyon düzeyidir. Hareket tarafından seçilmiş olan veri üzerine herhangi bir kilit uygulanmaz.
Tekrarlanabilir okuma , aktif edildiğinde kirli okuma ve tekrarlanamayan okuma eş zamanlılık problemleri ortadan kaldırılabilmektedir. Okunan tüm kaynaklara paylaşılan (S) kilit uygulanır.
Serileştirilebilir izolasyon düzeyi en kısıtlayıcı izolasyon düzeyidir. Bir hareket bir kayıt üzerinde okuma işlemi gerçekleştirdiği sırada başka bir hareketin okunan kayıtlar üzerinde değişiklik yapmasına izin verilmez.
Anlık görüntü izolasyon düzeyi hareketin başladığı sırada okunan verinin hareket içinde tutarlı bir değerinin kullanılmasına imkan vermektedir.
Kilitleme Yöntemi
Kilitleme çok kullanıcılı veritabanı yönetim sistemlerinin vazgeçilemez parçasıdır. Kilitleme yönetimi sayesinde VTYS’ler, farklı hareketlerin aynı veriye eş zamanlı olarak güncelleme yapmalarına izin vermemektedir.
Paylaşılan Kilit Modu
Paylaşılan kilit, değişikliğin gerçekleşmediği salt okunur sorgular esnasında otomatik olarak oluşmaktadır. Bu kilit modunda okuma yapılan sorgu ve hareketlerin verilere erişimine izin verilir.
Ayrıcalıklı Kilit Modu
MS SQL Server VTYS, insert, update veya delete işlemleri tarafından veri değişikliği yapılırken ayrıcalıklı kilit modunu otomatik olarak oluşturmaktadır. Aynı anda eş zamanlı olarak sadece bir hareket, veri kaynağı üzerinde ayrıcalıklı kilit bulundurabilir. Bir veri kaynağı ayrıcalıklı kilit modunda ise eş zamanlı hareketler bu veri kaynağı üzerine başka hiçbir kilit modu uygulayamaz.
Güncelleştirme Kilit Modu
Güncelleştirme kilit modu aslında ayrı bir kilit modu değil, paylaşılan ve ayrıcalıklı kilit modlarının birleşimidir. MS SQL Server VTYS veri değişikliği gerçekleştireceği zaman öncelikle değişikliğin gerçekleşeceği veriyi bulmak zorundadır. Verinin bulunması sırasında eş zamanlı olarak diğer hareketler okuma işlemi gerçekleştirebilirler.
Amaç Kilit Modu
Amaç kilit modu, kilit kuyruğu yaratır. Bu kilit kuyruğu, bağlantı sıralarını ve bu bağlantılar ile ilişki kullanılan kaynakların okuma ve güncelleme haklarını gösterir.
Özel Kilit Modları
Özel kilit modları şunlardır:
- Şema kararlılık kilit modu
- Şema değiştirme kilit modu
- Toplu güncelleştirme kilit modu
Kilitlenme
Kilitlenme, iki ya da daha fazla hareketin aynı kaynaklara erişim gerçekleştirmek istediği durumlarda meydana gelmektedir. Bu olasılığı azaltmak amacıyla farklı yöntem ve yaklaşımlar kullanılmaktadır. Bunlardan bazıları;
- Sorgu optimizasyonu yapılmalıdır.
- Kilitler mümkün olduğunca kısa tutulmalıdır.
- Gerekli veri tutarlılığını sağlayan en düşük izolasyon düzeyi kullanılmaktadır.
- Varlıklara aynı sırada erişim sağlanmalıdır.
- Veritabanı kayıtlarını okuma işlemlerinde kilitlenmeyi önlemek amacıyla with nlock kullanılabilmektedir.
- Tekrar deneme mantığı kullanılabilmektedir.
Kilitlenme izleyicisi: Kilitlenmeyi önlemek amacıyla kilitlenme izleyicisi adındaki sistem görev izleyicisi her beş saniyede bir yürütülür. Böylece sistemde bir kilitlenme olup olmadığı kontrol edilmiş olur.