"" Sorgusunu yürütmek şu hatayla başarısız oldu: "" tablosundaki "" dizini "(bölüm 1), sayfa düzeyi kilitleme devre dışı bırakıldığı için yeniden düzenlenemiyor."
Bakım planı, çevrimiçi bir işlem olan bir ALTER INDEX REORGANIZE girişiminde bulunmalıdır. Parçalanmayı gidermek için (sıralı olmayan sayfalar) sayfalar kilitlenmeli ve taşınmalıdır; sayfa kilitleri devre dışı bırakılmışsa bu mümkün değildir. Sayfa kilitleri olmadan birleştirme yapmanın tek yolu, REORGANIZE için yalnızca çevrimiçi olduğu için mümkün olmayan tüm bölümü kilitlemektir.
İki kilitleme şeması arasındaki fark nedir ve gerçek dünyalarının (üretimde) sonuçları nelerdir?
Belirli bir kilit türüne izin vermemenin etkisini değerlendirmek için bir kaydın ve sayfanın ne olduğunu kavramanız gerekir. SQL Server depolama iç elemanlar bilmiyorsanız, başlamak bir Record Anatomy ve bir Sayfa Anatomy . Çok basit bir ifadeyle:
- satırlar = kayıtlar
- satırlar 8 kb'lik sayfalarda saklanır
İzin verilen kilit türlerini değiştirirseniz:
- Sayfa kilitlerini devre dışı bırak = Yalnızca satır ve tablo kilitleri
- Satır kilitlerini devre dışı bırak = Yalnızca sayfa ve tablo kilitleri
- Her ikisini de devre dışı bırak = Yalnızca tablo kilitleri
Bir kilit türüne izin vermemenin nerede yararlı olabileceğinin farkında olduğum iki senaryo var. Başkaları olmadığı anlamına gelmez, umarım başka biri örneklerle devreye girer.
Sıklıkla değişen sık erişilen bir arama tablosu - Sayfa ve satır düzeyi kilitlerini devre dışı bırakarak, tüm okuyucular paylaşılan bir tablo kilidi alacaktır. Bu, tabloda genel olarak paylaşılan niyetten daha hızlı / daha ucuzdur, ardından bir sayfada niyet paylaşılır ve son olarak belirli bir satır veya satırlarda paylaşılan bir kilit gelir.
Belirli bir kilitlenme senaryosunu önleme - Aynı sayfada sık sık kilit elde eden eşzamanlı işlemlerin neden olduğu kilitlenmelerle karşılaşırsanız, satır kilitlerine izin verilmemesi sayfa kilitlerinin alınmasına neden olur. Bu durumda sayfaya yalnızca bir işlem erişebilir, diğeri beklemelidir.
İlk örnek mikro optimizasyon ve tipik bir sistemde ölçülebilir fayda sağlama olasılığı düşüktür. İkincisi, bu özel kilitlenme senaryosunu çözecektir, ancak beklenmeyen yan etkiler ortaya çıkarabilir, örneğin kodun farklı bir bölümünde eşzamanlılığı öldürmek. Etkiyi tam olarak değerlendirmek zor, dikkatle yaklaşın!
Varsayılan değer her ikisinin de etkinleştirilmesidir ve bu iyi bir sebep olmadan değiştirilmemelidir .