Strasszer Creative Commons License 2005.12.09 0 0 138
ajánlom figyelmedbe:
http://www.netacademia.net/publikacio/cikk/doc/0202deadlock.doc
Soczó Zsolt irta az mssql lockolási mechanizmusáról. Idézek:

Ha a zárolási rendszerről beszélünk, óhatatlanul felmerül a gondolat: mely műveletek során van szükség zárak használatára? Az UPDATE, INSERT és DELETE műveleteknél egyértelmű a válasz: adatmódosítás történik, tehát kell a lakat. Ilyenkor az SQL Server úgynevezett exclusive lockot, kizárólagos felhasználásra jogosító zárat tesz az érintett sorra/lapra/táblára (az eszkaláció szerint), s azt a tranzakció végéig fenn is tartja - más még csak nem is olvashatja a megbűvölés alatt álló adatokat.
De SELECT esetén kell-e zárolni? Ilyenkor adatmódosítás nyilvánvalóan nem történik - minek ide zár? Ilyen esetben a zárolás célja, hogy lehetetlenné tegye azon adatok módosítását, melyeket éppen olvasunk. Az SQL Serverben alapértelmezésben minden olvasás konzisztens adatokat, lezárt tranzakciók utáni állapotot ad vissza. Erre azért képes, mert minden olvasott sorra/lapra/táblára (az eszkaláció szerint) úgynevezett shared lockot, megosztott zárolást helyez. Azért megosztott, mert egy így zárolt objektumra tetszőleges számú további olvasó csimpaszkodhat, és olvashatja párhuzamosan a többiekkel.
A végeredmény: egy adatot egyszerre tetszőleges számú folyamat olvashat, de csak egyetlenegy írhatja.

a többi ott van a doksiban.
Előzmény: NevemTeve (134)