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

Nulové zablokování SQL podle návrhu – nějaké vzory kódování?

Psaní kódu odolného proti uváznutí je opravdu těžké. I když přistupujete ke stolům ve stejném pořadí, stále se můžete dostat do uváznutí [1]. Napsal jsem příspěvek na svůj blog, který rozvádí některé přístupy, které vám pomohou vyhnout se patovým situacím a vyřešit je.

Pokud chcete zajistit, aby se dva příkazy/transakce nikdy nezablokovaly, můžete toho dosáhnout tím, že budete sledovat, které zámky každý příkaz spotřebuje pomocí sp_lock uložená procedura systému. Chcete-li to provést, musíte být buď velmi rychlí, nebo použít otevřenou transakci s nápovědou k pozastavení.

Poznámky:

  1. Jakýkoli příkaz SELECT, který potřebuje více než jeden zámek najednou, může uváznout na mrtvém bodě proti inteligentně navržené transakci, která zachytí zámky v opačném pořadí.


  1. Pochopení dávkových operací JDBC

  2. Protokol transakcí serveru SQL, část 2:Architektura protokolů

  3. Jak nainstalovat SQL Server na Red Hat 8

  4. Jak vypíšete primární klíč tabulky serveru SQL?