17 Ocak 2017 Salı

Transaction Bloğunun Çalışması



SQL Server üzerinde herhangi bir veride değişiklik yapıldığı zaman, ilgili sayfalar daha önce diskten hafızaya çağrılmamış ise öncelikle tampon belleğe alınır.
Daha sonra üstünde değişiklikler yapılır.
Yapılan değişiklikler diske hemen yansıtılmaz. Bu şekilde içeriği denenmiş ama henüz diske kaydedilmemiş sayfalara kirli sayfa adı verilmektedir.
Sayfada meydana gelen her değişiklik *.ldb uzantılı transaction log dosyalarına kaydedilir. Kirli sayfaların diske kaydedilmesi işlemine «arındırma» adı verilmektedir.
Arındırma işlemi gerçekleşmeden önce kirli sayfalardaki tüm değişiklikler log dosyasına yansıdığı için işlem gerçekleşirken ortaya çıkacak olan istenmeyen durumlardan sonra eski haline dönmek mümkün olmaktadır.
Eğer herhangi bir sorun ortaya çıkmaz ise arındırma işlemi düzgün olarak gerçekleşir ve veriler diske yazılır.

Transaction’lar içerdikleri tüm işlemleri başarıyla gerçekleştiren ya da veri tabanı üzerinde hiçbir değişiklik yapmayan atomik yapılardır.
Olası bir durumda kurtarma işlemlerinin gerçekleştirilebilmesi için her işlemin ne zaman başladığı, ne zaman bittiği ve başarılı bir şekilde tamamlanıp tamamlanmadığı bilgisinin sistemde tutulması gereklidir. Bu sebeple kurtarma yöneticisi (recovery manager) şu bilgileri saklamaktadır

BEGIN TRANSACTION: Transaction’ ın başlangıcını işaretler.
READ/WRITE: Transaction’ın içeriğinde gerçekleştirilen işlemlerin bilgisini içerir.
END TRANSACTION: Transaction’ın bitişini işaretler.
COMMIT: Transaction’ın başarıyla sonuçlandığı bilgisini içerir.
ROLLBACK/ABORT: Transaction’ın başarısız olduğu bilgisini içerir.


Bir transaction’ın çalışması aşağıdaki gibidir.