Hvorfor får jeg COLUMNLOCK ved en NONCLUSTERED INDEX
Jeg prøver at finde ud af, om jeg gør noget forkert, eller det er med vilje:Jeg finder det mærkeligt, at når jeg har en NONUNIQUE INDEX på SessionId, og opdaterer på "SessionId = 'Noget'", så kan jeg ikke lave en SELECT med "SessionId = 'Noget andet'", før min UPDATE er færdig, så det føles som om jeg ikke kun laver en ROWLOCK, men også laver en COLUMNLOCK på SessionId-kolonnen.
Især mærkeligt, fordi jeg ville forvente, at jeg så ville have samme problem uden INDEX på SessionId, men det er ikke tilfældet.
Så er der en anden måde at lave en NONCLUSTERED INDEX på, så det ikke giver mig en oplevelse af en COLUMNLOCK, eller er dette bare by design, og jeg bør undlade at lave en INDEX?
- Yderligere oplysninger nedenfor for at forklare spørgsmålet:
1. DROP INDEX [IX_tal] ON [dbo].[tblLog]
2. CREATE NONCLUSTERED INDEX [IX_tal] ON [dbo].[tblLog] ([SessionID] ASC) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
når jeg laver DROP INDEX, så bliver jeg ikke låst ude af min SELECT under UPDATE, nedenstående skærmbillede beskriver min oplevelse af problemet.
(Jeg prøvede også med en UNIQEU INDEX, som fungerer perfekt, men når dataene ikke er unikke i den kolonne, så kan jeg ikke bruge den tilgang)
https://imgur.com/a/iZk8KO3