COMPUTER ENGINEER

Örneklere git
Blog
SQL Server / T-SQL6 dk çalışma
54/ 65

Eşzamanlılık ve izolasyon

Deadlock ve optimistic concurrency

Çatışmayı tasarımın parçası kabul et.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

Deadlock, oturumların birbirinin kaynağını döngü içinde beklemesidir. SQL Server bir victim seçip 1205 hatasıyla transaction’ı geri alır. Tutarlı nesne erişim sırası, kısa transaction ve iyi indeksler riski azaltabilir; tamamen yok edeceği garanti edilmez. Deadlock graph hangi kaynakların ve sorguların döngü oluşturduğunu gösterir.

Retry yalnız idempotent veya güvenle tekrar edilebilir iş mantığıyla, sınırlı deneme ve backoff kullanılarak yapılır. rowversion zaman damgası değil, değişiklik belirtecidir. WHERE Id = @Id AND Version = @OldVersion koşullu UPDATE, kullanıcı düzenleme yaparken değişen kaydı tespit edebilir. Sıfır satır etkilenmesi çatışma veya kaydın bulunmaması olabilir; sessizce başarılı sayma.

NERESİNDE KULLANIRSIN?

Kayıp güncellemeyi ve güvenli tekrar denemeyi yönetmek için.

SIK YAPILAN HATA

rowversion’ı tarih gibi göstermek veya sınırsız retry yapmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

T-SQL / SQL Server 2019+
SELECT ERROR_NUMBER() AS ErrorOutsideCatch;

CATCH dışında NULL döner; hata bilgisi kapsamlıdır.

Bu sayfa SQL çalıştırmaz. Örnekleri indirilebilir SqlStudioLab veritabanında, SSMS’de uygula. Geçici tablo örneklerini yeniden çalıştırırken yalnız ilgili #tabloyu temizle. VIEW, procedure ve function örnekleri lab’da kalıcı nesne oluşturur; üretim bağlantısı kullanma.

02 / SIRA SENDE

Önce kendin dene.

VersionDemo’daki token’ın veri tipini incele.

Çözümü ve açıklamasını göster
Açıklamalı çözüm
SELECT Id, Version, DATALENGTH(Version) AS TokenBytes FROM #VersionDemo;

Önce orta örneği çalıştır. Token sekiz baytlık değişiklik belirtecidir.