Przeczytałem, że jeśli użyję IsolationLevel.ReadUncommitted, zapytanie nie powinno powodować żadnych blokad. Jednak kiedy to przetestowałem, zobaczyłem następującą blokadę:
Resource_Type: HOBT
Request_Mode: S (Shared)
Co to jest blokada HOBT? Coś związanego z HBT (blokada sterty lub drzewa binarnego)?
Dlaczego nadal miałbym dostać blokadę S?
Jak uniknąć wspólnego blokowania podczas wysyłania zapytań bez włączania opcji migawki poziomu izolacji?
Testuję to na SQLServer 2008, a opcja migawki jest wyłączona. Zapytanie wykonuje tylko zaznaczenie.
Widzę, że Sch-S jest wymagany, chociaż SQL Server wydaje się nie wyświetlać go w moim zapytaniu blokującym. Dlaczego nadal wydaje wspólną blokadę? Według:
USTAW POZIOM IZOLACJI TRANSAKCJI (Transact-SQL)
Transakcje wykonywane na
READ UNCOMMITTED
poziomie nie powodują blokad współdzielonych, aby uniemożliwić innym transakcjom modyfikowanie danych odczytanych przez bieżącą transakcję.
Więc jestem trochę zdezorientowany.