sql >> Databáze >  >> RDS >> Sqlserver

Optimistické vs. pesimistické zamykání

Optimistické zamykání je strategie, kdy čtete záznam, berete na vědomí číslo verze (jiné metody k tomu zahrnují data, časová razítka nebo kontrolní součty/hash) a před zapsáním záznamu zpět zkontrolujte, zda se verze nezměnila. Když záznam zapisujete zpět, filtrujete aktualizaci podle verze, abyste se ujistili, že je atomická. (tj. nebyl aktualizován mezi tím, kdy zkontrolujete verzi a zapíšete záznam na disk) a aktualizujte verzi jedním přístupem.

Pokud je záznam špinavý (tj. jiná verze než vaše), přerušíte transakci a uživatel ji může znovu spustit.

Tato strategie je nejvíce použitelná pro velkoobjemové systémy a třívrstvé architektury, kde nemusíte nutně udržovat připojení k databázi pro vaši relaci. V této situaci klient ve skutečnosti nemůže udržovat zámky databáze, protože připojení jsou přebírána z fondu a možná nepoužíváte stejné připojení z jednoho přístupu k druhému.

Pesimistické zamykání znamená, že zamykáte záznam pro své výhradní použití, dokud s ním neskončíte. Má mnohem lepší integritu než optimistické zamykání, ale vyžaduje, abyste byli opatrní při návrhu aplikace, abyste se vyhnuli zablokování. Chcete-li použít pesimistické zamykání, potřebujete buď přímé připojení k databázi (jak by tomu bylo obvykle v případě dvouvrstvé klientské serverové aplikace), nebo externě dostupné ID transakce, které lze použít nezávisle na připojení.

V druhém případě otevřete transakci s TxID a poté se znovu připojíte pomocí tohoto ID. DBMS udržuje zámky a umožňuje vám vybrat relaci zpět prostřednictvím TxID. Takto fungují distribuované transakce využívající dvoufázové potvrzovací protokoly (jako jsou transakce XA nebo COM+).



  1. Anatomie vývoje softwaru Role:Data Scientist

  2. NASTAVIT ZAPOČET NA použití

  3. Jak změnit symbol měny relace v Oracle

  4. Mapování PostgreSQL textu[][] typu a typu Java