Welcome to Sign in | Help

Re: locking on update

  •  04-02-2012, 10:17 AM

    Re: locking on update

    M-a lamurit propozia asta :D :

    "In cazul in care nu avem indexi sau criteriul de filtrare nu este foarte selectiv, atunci se va prefera un index scan. Dezavantajul este ca la citirea fiecarui rand se vor pune lockuri pentru a avea consistenta datelor (lockurile sunt puse pe fiecare rand doar in timpul citirii acelui rand). Acestea ar trebui sa fie shared locks (datele pot fi citite dar nu pot fi sterse/modificate in timpul acesta). Pe randurile care indeplinesc criteriul/criterile de filtrare, se vor pune exclusive locks (datele nu pot fi citite/sterse/modificate pe toata perioada tranzactiei). "

    Care cred ca se aplica si pentru al 2-lea caz (index seek cu predicate).

    Inteleg ca de fapt inca din momentul obtinerii resultsetului se pun exclusive locks, ci nu in momentul in care se face update-ul.
    Astfel asta inseamna ca de fapt seriliazarea se va face inca din faza de obtinere a result seturilor.



    Offtopic : Pentru cei care vor citi acest thread sa fie atenti si la lock escalation (daca este activat se va pune un lock exclusiv direct pe tabela daca numarul de randuri afectate vor depasii ~5000. Daca nu se reuseste escaladarea din prima se va incerca la fiecare ~1000 randuri. Lockul exclusiv pe tabela blocheaza toate selecturile care nu sunt cu (nolock) sau isolation level read uncommitted). Pe mine nu m-a interesat acest aspect :)

    Offtopic : Pentru usurinta se poate folosi si sp_lock.

    Mersi,
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems