Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 8936|Odpoveď: 0

SQL zámky NOLOCK, HOLDLOCK, UPDLOCK, TABLOCK, TABLOCKX

[Kopírovať odkaz]
Zverejnené 20. 7. 2016 14:02:51 | | |

NOLOCK
Keď je táto možnosť vybraná, SQL Server číta alebo upravuje dáta bez akýchkoľvek zámkov. V takom prípade môže používateľ čítať dáta z nezáväznej transakcie alebo vrátenia, známych ako "špinavé dáta".

HOLDLOCK
Keď je táto možnosť vybraná, SQL Server udržiava tento zdieľaný zámok až do konca celej transakcie bez jeho uvoľnenia počas cesty.

UPDLOCK
Keď je táto možnosť vybraná, SQL Server používa modifikačný zámok namiesto zdieľaného pri čítaní dát a tento zámok udržiava až do konca celej transakcie alebo príkazu. Táto možnosť zabezpečuje, že viaceré procesy môžu čítať dáta súčasne, ale iba tento proces môže údaje upravovať.

TABLOCK
Keď je táto možnosť vybraná, SQL Server uloží zdieľaný zámok na celú tabuľku, kým príkaz neskončí. Táto možnosť zabezpečuje, že ostatné procesy môžu iba čítať a nemôžu údaje upravovať.

PAGLOCK
Táto možnosť je predvolená a keď je vybraná, SQL Server používa zdieľaný zámok stránky.

TABLOCKX (Exkluzívny zámok stola)
Keď je táto možnosť vybraná, SQL Server uzamkne celú tabuľku, kým príkaz alebo transakcia neskončí. To zabráni iným procesom čítať alebo upravovať údaje v tabuľke.

HOLDLOCK drží zdieľaný zámok až do dokončenia celej transakcie a mal by byť uvoľnený hneď, ako uzamknutý objekt nie je potrebný, čo zodpovedá úrovni izolácie transakcie SERIALIZABLE

Príkaz NOLOCK sa vykonáva bez vydania zdieľaného zámku, čo umožňuje nečisté čítania, čo zodpovedá úrovni izolácie READ UNCOMMITTED transakcie

PAGLOCK používa viacero zámkov stránok, kde sa používa jeden zámok tabuľky

READPAST umožňuje SQL serveru preskočiť akékoľvek uzamknuté riadky a vykonávať transakcie, a pre úrovne izolácie transakcií READ uncommitted preskakuje len RID zámky, nie zámky stránok, zón a tabuliek

ROWLOCK vynucuje používanie rowlockov

TABLOCKX vynucuje použitie exkluzívneho zámku na úrovni tabuľky, ktorý zabraňuje akejkoľvek inej transakcii používať tabuľku počas transakcie

UPLOCK núti používať aktualizácie pri čítaní tabuľky bez zdieľaného zámku

Poznámka: Rozdiel medzi uzamknutím tabuľky v databáze
SELECT * FROM table WITH (HOLDLOCK) Iné transakcie dokážu tabuľku čítať, ale nemôžu ju aktualizovať alebo vymazať
VYBRAŤ * Z tabuľky pomocou (TABLOCKX) Ostatné transakcie nemôžu čítať, aktualizovať a mazať tabuľky




Predchádzajúci:Zámky, špinavé čítania, neopakovateľné čítania a falošné čítania v SQL
Budúci:SQL Server sa pozrie na zablokovanie a uvoľní ho
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com