Merhaba
Sistemde nolock kullanmak sizin tasarımınızda hata vardır anlamında değildir farklı yere data atmak zorunda kalırsınız. Eninde sonunda bir yerlerde nolcok kullanırsınız bunun oracle mssql ile de alakası olmadığını düşünüyorum. Sonuçta tablo tasarımınızda denormalizasyon yapmaya başlarısınız bu da I/O costunuzu arttırabilir. Şuan en büyük gördüğüm Internet Bankacalığında 5 TB data mız vardı çoğu tablomuzun 2 milyardan fazla datası vardı ve bazı noktalarda tabloların update edilmesi gerekiyordu mission critic yerler dışında hiç bir yerde nolock kullanmamazlık etmedik. Kısaca demeye çalıştığım şey bunu nolock kullanmak tasarım hatasıdır demek biraz yamlış olur
1. Normalizasyon dediğiniz zaman tekrarlanan data olmamaası gerekli. genel olarak da 3NF'de ileri de gitmek performans sorunu yaratbilir.
2. 3 NF'e uygun bir şekilde dizayn edilmiş bir tabloyu tekrar bölmek ve bu datayı sürekli bi tablodan update edilecek yere kopyalamak çok specific caseler dışında bir anlamı yoktur.
3. Her doğru tasarım performance'lı olacak diye bir kaide olmadığı gibi de 3-4 TB'lik tek bir Database üzerinde 1ms'nin bile önemi olduğunu ve yazılan mission critic yerler dışında nolock kullanılmasını tavsiye ederim ben bulunduğum projelerde böyle yapıyorum tasarım dediğiniz şey felsefe olduğu için herkesin düşüncesi kendine tavsiye olarak da
4. Martin Fowler'ın kitabın EAP'da her söylediğini harfine yapmak zorunda deilsiniz sizin caseleriniz size uygundur ama çoğu case'de sizi kurtarır : )
Akılda bulunması açısından SnapShot Isolation level bvest practicelerde ve gördüğüm projelerde asla Prod ortamında çalıştırılmaz sadece dev ve test ortamlarında izin verilirki developerler çalışırken diğerleri etkilenmesin
bunu kullanmak perf kaybıdır.
Sidar bi ara yemeğe gidersiniz ama ben de kullanmam o zaman bana da ısmarla geldiğindetempdb bottleneck diye troubleshooting perf. sql srv 2005 de geçio sanırım bu orda okumak gerekli