Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 8936|Odpověď: 0

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

[Kopírovat odkaz]
Zveřejněno 20.07.2016 14:02:51 | | |

NOLOCK
Když je tato možnost zvolena, SQL Server čte nebo upravuje data bez jakýchkoli zámků. V takovém případě může uživatel číst data z nezávazné transakce nebo vrácení zpět, což je známé jako "špinavá data".

HOLDLOCK
Když je tato možnost zvolena, SQL Server udržuje tento sdílený zámek až do konce celé transakce, aniž by jej cestou uvolnil.

UPDLOCK
Když je tato možnost vybrána, SQL Server používá při čtení dat zámek modifikace místo sdíleného zámku a tento zámek udržuje až do konce celé transakce nebo příkazu. Tato možnost zajišťuje, že více procesů může data číst současně, ale pouze tento proces může data upravovat.

TABLOCK
Když je tato možnost vybrána, SQL Server umístí sdílený zámek na celou tabulku až do konce příkazu. Tato možnost zajišťuje, že ostatní procesy mohou data pouze číst, ale nemohou je upravovat.

PAGLOCK
Tato možnost je výchozí a při výběru SQL Server používá sdílený zámek stránky.

TABLOCKX (Exkluzivní zámek stolu)
Když je tato možnost vybrána, SQL Server uloží zámek na celou tabulku, dokud příkaz nebo transakce neskončí. To zabrání jiným procesům v čtení nebo úpravě dat v tabulce.

HOLDLOCK drží sdílený zámek do dokončení celé transakce a měl by být uvolněn jakmile není uzamčený objekt potřeba, což odpovídá úrovni izolace transakce SERIALIZABLE

Příkaz NOLOCK se vykoná bez vydání sdíleného zámku, což umožňuje nečisté čtení, což odpovídá úrovni READ UNCOMMITTED transaction isolation

PAGLOCK používá více zámků stránek, kde se používá jeden zámek tabulky

READPAST umožňuje SQL serveru přeskočit všechny zamčené řádky a provádět transakce, a pro úrovně izolace transakcí READ UNCOMMITTED přeskočí pouze RID zámky, nikoli zámky stránek, zón a tabulek

ROWLOCK vyžaduje použití rowlocků

TABLOCKX vynucuje použití exkluzivního zámku na úrovni tabulky, který zabraňuje jakékoli jiné transakci v používání tabulky během transakce

UPLOCK vyžaduje použití aktualizací při čtení tabulky bez sdíleného zámku

Poznámka: Rozdíl mezi uzamčením tabulky v databázi
VYBERTE * Z tabulky POMOCÍ (HOLDLOCK) Jiné transakce mohou tabulku číst, ale nemohou ji aktualizovat ani mazat
VYBERTE * Z tabulky POMOCÍ (TABLOCKX) Ostatní transakce nemohou tabulky číst, aktualizovat ani mazat




Předchozí:Zámky, špinavé čtení, neopakovatelné a falešné čtení v SQL
Další:SQL Server se na tento zámek podívá a uvolní ho
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com