İlginizi Çekebilir
  1. Ana Sayfa
  2. SQL

SQL Server Deadlock Nedir? Yanlış Bilinenler

SQL Server Deadlock Nedir? Yanlış Bilinenler
+ - 0

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.

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. ?

Bu yazıya tepkiniz ne oldu?

Yazar Hakkında

Lise Ağ Sistemleri ve Yönetimi bölümü, üniversite Bilgisayar Programcılığı bölümü Ön Lisans, Yönetim Bilişim Sistemleri Lisans öğrenimi aldım. Askerlik görevimi tamamladım. Uzmanlık alanım; C# ve SQL Programlama dilleri ile müşteri odaklı, kullanıcı dostu ERP ve CRM gibi sistemleri geliştirmektir. Ayrıca şuanda PHP ve MYSQL alanında projeler geliştirmekteyim. C++, Phyton, Xamarin, MVC gibi konuları öğrenmek ve kendimi geliştirme çabası içerisindeyim. Discord için: https://discord.gg/FBxZeHu9

Değerli yorumlarınızı bekliyorum. :)