Welcome to Sign in | Help

Re: Shared Locks and Stored Procedures

  •  05-28-2008, 12:00 AM

    Re: Shared Locks and Stored Procedures

    Nu cred ca SHARED LOCK are vreo legatura cu ideea de procedura storata in sine. Un query rulat dintr-o procedura sau unul dintr-un SQL dinamic (cel pe carel scrii in cod si-l trimiti la server) se comporta la fel raportat la lock-uri. Procedurile stocate prezinta alte avantaje cum ar faptul ca sunt precompilate si ca planurile de executie au sanse mai mari de a fi reutilizate de catre server.

    Ma gandesc insa ca autorul se refera la urmatoare situatie: faci un SELECT folosind un IDataReader (de ex SqlDataReader), stai in bucla while(dr.Read()) si faci operatiuni de INSERT, UPDATE, DELETE in acceasi tabela, eventual pe aceleasi recorduri. SELECT-ul mentine un SHARED LOCK iar INSERT, UPDATE, DELETE ar vrea si ele sa faca un LOCK exclusiv pe aceleasi recoduri (sau pagini). In acest moment intr-adevar performnata I,U,D are de suferit, iar in unele situatii poate aparea DEADLOCK. Idee e sa eliberezi lock-ul cat mai repede posibil si asta se poate face daca incarci datele intr-o colectie de date (deconectata), dupa care poate urma orice alta procesare.

    Daca afli pana la urma ce-a vrut sa spuna autorul, scoate-ma si pe mine din ceata.


    Florin Cardasim
    Filed under:
View Complete Thread
Powered by Community Server (Commercial Edition), by Telligent Systems