SQL Server Deadlock Nedir? Yanlış Bilinenler

SQL Server Deadlock Nedir? Yanlış Bilinenler

4 Eylül 2018 0 Yazar: Mustafa BÜKÜLMEZ
Toplam Görüntülenme : 149
Yaklaşık okuma süresi : 2 DK
SQL Table-Valued Functions – Tablo Fonksiyonları
SQL Stored Prodecure - Saklı Yordam
SQL Server Deadlock Nedir? Yanlış Bilinenler
5 (100%) 2 Oy

SQL Server Deadlock Nedir? Yanlış Bilinenler yazısı ile sql eğitim setime devam ediyorum. Bu dersin eğitim seti ile ne alakası var diyebilirsiniz ama sonuç olarak sql üzerinde yaşadığımız bir hatadır ve çözümünü de bilmek gerekir. Kısaca SQL ile ilgili her yazım bu eğitim setinde yer alacaktır. SQL Server Deadlock Nedir? Yanlış Bilinenler ‘ni görelim

 

SQL Server Deadlock Nedir? Yanlış Bilinenler

Deadlock, Türkçe anlamı ölümcül kilit anlamına gelir. Yani anlayacağınız üzerine SQL in kilitlenmesi… Bu olay her sistem yöneticisinin başına gelmiştir. Yada yazılım geliştiren insanlar da mutlaka en az bir kere görmüşlerdir. Bu hata genellikle birden çok kullanıcıya sahip olan projelerde görürüz.

Veritabanlarımızda bir update işlemi yaptığımızda, güncelleme bitene kadar sql server ilgili tabloyu kilitler. Aynı sırada farklı bir işlem tabloda bir güncelleme yapmak istediğinde bekletmeye alınır, timeout (zaman aşımı) süresi kadar kilidin açılmasını bekler. Bu süre içerisinde ilk transaction’ın bitmesini veya roll back (geri alınmasını) bekler. Bu iki transaction birbirini beklemeye başladığı sırada deadlock dediğimiz olay meydana gelir. Özetlersek, iki farklı kaynak birbirine erişmek istiyor fakat ikisi de birbirlerinin üzerindeki işlerin bitmesini bekliyor.

Deadlock olayının kesin bir çözümü yoktur. Deadlock oluşmasını önleyici bir takım tedbirler ve analizler yapılabilir. Birçok deadlock’ı veritabanı dizaynı ve indeksleme sayesinde giderebiliriz. Ayrıca hata yakalama yöntemleri ile de deadlocklar önlenebilir.

Yanlış Bilinenler

1 – Deadlock’lar bir SQL Server açığı değildir. Sadece hatalı kodlamadan daha doğrusu deadlock ihtimali düşünülmeden yapılan kodlamadan kaynaklıdır.

2 – Deadlock’lar önlemez değildir. Deadlock’un önlenmesi için yapılacak birçok işlem vardır. Veritabanının düzenlenmesi, T-SQL kodlarının kontrol edilmesi ve uygun sıralamalar ile çalıştırılması gibi yöntemler deadlock’u önlemeye yardımcı olabilir.

İlgili İçerik  SQL Case When Kullanımı

3 – Her sorguyu indexlemek, deadlock’u önleyemez. Gereksiz yere fazla indexleme yapmak veritabanını şişirmekten başka bir işe yaramayacaktır. Nolock ile aynı kapsamdadır. Sorgularda Nolock kullanılması bir nebze olsun engellemeyi sağlıyor. Bilinçsiz yere yapılan indexlemeler performans kaybından başka bir şey sağlamayacaktır.

 

Bu konuda en ayrıntılı bilgiye ulaşmak için bu linke tıklayabilirsiniz.


 

SQL Server Deadlock Nedir? Yanlış Bilinenler yazısı da bu kadardı. Diğer derslerimizde görüşmek üzere.

Microsoft SQL Server & T-SQL Eğitim Seti ders listesi için tıklayınız.

Sağlıcakla ve Takipte Kalın. 😉

SQL Table-Valued Functions – Tablo Fonksiyonları
SQL Stored Prodecure - Saklı Yordam
Mustafa Bükülmez

Liseden, Ağ Sistemleri ve Yönetimi bölümünden mezun oldum. Üniversiteden (2 yıllık), Bilgisayar Programcılığı bölümünden mezun oldum. Şuanda da AÖF, Yönetim Bilişim Sistemleri bölümünde okumaktayım.

Uzmanlık alanlarım; Windows Sistemleri, HTML, CSS, C# ve SQL’dir.

Hobi olarak uğraştığım genel konular, Photoshop, After Affects, Corel Draw’dır.Film, YABANCI dizi, Anime izlemeyi ve Manga okumayı severim. Arkadaşlarımla yürüyüş yapmayı ve grup olarak aktivitelere gitmeyi severim. Geri kalan zamanlarımın tümü bilgisayar karşısında geçer.