Ustawiłem blokadę transakcji do serializacji dla transakcji. Ale obserwuję niektóre wyniki, które nie są oczekiwane.blokowanie transakcji z serializacją transakcji
Moje zapytanie jest
update tabl1 set col2 = 10 where col1 > 10 and col1 < 20
Tutaj kol1 jest podstawowe rzędy key.Here z kol1 posiadające wartość 10,11,12 .... 19,20 są zablokowane do aktualizacji/wkładki. W którym warunku podałem warunki jako col1> 10 i col1 < 20, ale nadal wiersze mające col1 = 10 i col1 = 20 zostają zablokowane.
jeśli dam
update tabl1 set col2 = 10 where col1 => 10 and col1 <= 20
następnie wiersze z COL2 wartości mających od 9 do 21 dostaje locked.So dlaczego kol1 po 9 i 21 zostaje tu zamknięty?
Dla poniższej kwerendy pełna tabela zostaje zablokowana.Tutaj col3 jest kolumną inną niż podstawowa.Czy nie mogę ustawić blokady, jeśli kolumna, w której warunek nie jest kluczem podstawowym?
update tabl1 set col2 = 10 where col3 > 10 and col3 < 20
Ale który wskaźnik powinien być stosowany? Klastry lub nie skupione? – wincoding
@wincoding - Nie ma znaczenia, że SQL Server może zabrać blokady z kluczem, dopóki używa tego indeksu do rozwiązania "WHERE" –