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

Co je to uváznutí v databázi?

Uváznutí obecně znamená, že dvě nebo více entit blokuje některé zdroje a žádná z nich nemůže skončit, protože blokují zdroje cyklickým způsobem.

Jeden příklad:Řekněme, že mám tabulku A a tabulku B, potřebuji provést nějakou aktualizaci v A a pak B a rozhodnu se obě zamknout v okamžiku použití (toto je opravdu hloupé chování, ale nyní to slouží svému účelu ). Ve stejnou chvíli někdo jiný udělá to samé v opačném pořadí – nejprve uzamkne B, potom A.

Chronologicky se to stane:

proc1:Zámek A

proc2:Zámek B

proc1:Lock B - začne čekat, dokud proc2 neuvolní B

proc2:Lock A - začne čekat, dokud proc1 neuvolní A

Ani jeden z nich nikdy neskončí. To je zablokování. V praxi to obvykle vede k chybám při vypršení časového limitu, protože není žádoucí, aby jakýkoli dotaz visel navždy, a základní systém (např. databáze) ukončí dotazy, které neskončí včas.

Jedním ze skutečných příkladů uváznutí je, když zamknete klíče od domu v autě a klíče od auta ve svém domě.



  1. Jak urychlit načítání dat do InnoDB (LOAD DATA INFILE)?

  2. Vyhledávání PHP/Mysql – rozlišují se malá a velká písmena

  3. Jak naplnit postgresql databázi pomocí Mrjob a Hadoop

  4. Jaké jsou optimální velikosti varcharů pro MySQL?