SQL Yazılım

Transaction Nedir? Ne İşe Yarar?

Transaction

Transaction nedir sorusuna cevap olarak, daha küçük parçalara ayrılamayan en küçük işlem yığınına denir. Belirli bir grup işlemin arka arkaya gerçekleşmesine rağmen, işlemlerin toplu olarak değerlendirilmesini sağlar. “Transaction”, prensip olarak ya bütün işlemleri gerçekleştirir ya da hiçbirini gerçekleştirmez.

Auto Commit

SQL Server’da default transaction türüdür.  Yani yapılan işlemler anında uygulanır.  Eğer autocommit aktifleştirildiyse(autocommit=1) her ifade bir transaction olarak algılanır.  Yeni bir transaction başlamadıkça önceki SQL komutlarının tamamı bir transaction olarak işlem görür.  Autocommit’i iptal etmek için; SET autocommit=0 , Autocommit ifadesi kullanıldığında ayrıca Start ya da Begin Transaction ifadesinin kullanılmasına gerek kalmaz.

Dahili(Implict) Transaction

SQL Server’in belli ifadelerden sonra otomatik olarak transaction açmasını sağlar. Bu modda, bu belli ifadeler kullanıldıktan sonra, kullanıcı tarafından transaction’ın sonlandırılması gerekir. Bu nedenle zahmetli bir mod’dur. Oracle veritabanı default olarak bu modu kullanır.

Harici(Explicit) Transaction

SQL Server’in kullanıcı tarafından bir BEGIN TRAN ifadesi ile transaction’a başlatılması şeklindeki bloktur. Bir aksilik olması halinde SQL Server tarafından veya kullanıcı tarafından COMMIT ifadesi ile gerçekleşmiş olarak veya ROLLBACK ifadesi ile hiç olmamış olarak sonlandırlabilir.

Save Tran(Sabitleme Noktaları)

Sabitleme noktaları oluşturulması, transaction içerisinde en başa dönmek yerine, belirlenen bir işlem noktasına dönmek için kullanılır.

SAVE TRAN[SACTION] [ kayit_noktasi_ismi | @kayit_noktasi_degiskeni ]

Kilit (lock)

Birden fazla eşzamanlı çalışan transactionları, senkronizasyon mekanizması kullanarak birbirleri arasında koruma sağlaması.

Lock mode

Transactionların kilitlendiğindeki erişim seviyesi.

Kilitlenme (blocking)

Bir transaction işlemi çalışmaya başladığında kilit talebinde bulunuyor ise, çakışan diğer diğer transactionların beklemesi ve ilk transaction bitene kadar diğerlerine izin vermemesi.

Deadlock

İki transaction birbirlerini blokladığında, her biri kaynakları üzerindeki kilidi açmaya çalışır, bu sırada transactionlar çatışma moduna düşer (conflicting mode) deadlock meydana gelir.

Transaction’ da birden fazla bağlanıldığında bekleme süresi nedir ?

Sql server periyodik olarak deadlock tespiti için arama işlemi başlatır. Varsayılan olarak bu periyodik monitörleme işlemi 5 saniye aralıkla yapılmaktadır. Sql server’da deadlock tespit edildiğinde bu zaman 100ms’ye kadar düşer ve deadlock lar tamamen bitene kadar 100ms periyodu ile taramaya devam eder, deadlock’lar tamamen bittikten sonra arama periyodu 5 saniyeye tekrardan çıkar. Deadlock araması sırasında, bloke olan işlemler tespit edilir, hangi kaynağın bloke koyduğu bulunur ve bu işlem yinelemeli olarak devam eder. Deadlock tespit edildiğinde, deadlock gören işlemlerden birisi sonlandırılır ve işlem geri alınır (roll back transaction). Kullanıcı 1205 no’lu hatayı alır.

Bu yazıyı paylaşın
İlkay Genç
Merhaba, C# ve SQL dersleri hakkında Yazılım Geliştirme Uzmanı olarak sizlerle bildiklerimi bloğumda paylaşıyorum. Sende öğrenmek istiyorsan bloğuma abone ol.
https://www.ilkaygenc.com.tr

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir