SQL Server 2005 - správa souběžnost na stolech

hlasů
1

Mám v aplikaci ASP.NET tento proces:

  • -Li se připojit
  • Spustit transakci
  • Vložit do tabulky „LoadData“ hodně hodnoty s třídou SqlBulkCopy s kolonou, která obsahuje konkrétní LoadId.
  • Volání uložené procedury, že:
    • přečíst tabulka „LoadData“ pro konkrétní LoadId.
    • Pro každý řádek dělá hodně výpočtů což znamená čtení desítky tabulek a zapište výsledky do dočasné (#temp) tabulka (proces trvající několik minut).
    • Odstraní řádky „LoadDate“ pro konkrétní LoadId.
    • Jakmile je vše hotovo, zapište výsledek v tabulce výsledků.
  • Zavázat transakce nebo vrácení zpět, pokud něco selže.

Můj problém je, že když mám 2 uživatelé, které začínají v procesu, druhý bude muset čekat, že předchozí dokončil (protože vložka se zdá dát exkluzivní zámek na stole) a mé žádosti někdy upadne do vypršení časového limitu (a uživatelé nejsou spokojeni počkat :)).

Já jsem hledal způsob, jak mít možnost uživatele, který dělá vše paralelně, protože není interakci s výjimkou posledního: Psaní výsledek. Myslím, že to, co se mi blokuje je vložky / odstraní v „LoadData“ tabulky. Ověřil jsem si další úrovně izolace transakcí, ale zdá se, že nic, co by mi mohl pomoci.

Jaký by měl být ideální by bylo, aby bylo možné odstranit exkluzivní zámek na „LoadData“ tabulky (je to možné vynutit SQLSERVER jen zamknout řádky a ne stole?), Když je Insert hotové, ale bez ukončení transakce.

Nějaký návrh?

Položena 09/12/2008 v 14:38
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
1

Pokud jste si jisti, že neexistuje žádný problém s cioncurrent operací s výjimkou poslední části, proč nezačít transakci těsně předtím, než ty poslední prohlášení, podle toho, že jsou, které vyžadují izolaci) a ihned po spáchání uspějí .. Potom všechno předem operace čtení nebude blokovat navzájem ...

Odpovězeno 09/12/2008 v 15:24
zdroj uživatelem

hlasů
1

Najděte SET TRANSACTION IZOLACE LEVEL READ spáchal SNAPSHOT v Books Online.

Odpovězeno 09/12/2008 v 15:04
zdroj uživatelem

hlasů
1

Transakce by se měla vztahovat na malé a rychle se spuštěním kusy SQL / kódu. Mají tendence, které mají být realizovány odlišně na různých platformách. Budou uzamčení tabulky a rozbalte zámek jako modifikace rostou tedy uzamčení ostatním uživatelům dotazování nebo aktualizovat stejný řádek / stránku / tabulku.

Proč ne zapomenout na transakci a zpracování chyb zpracování jiným způsobem? Je vaše data integrity Truely je zajištěn transakcí, nebo můžete žít bez něj?

Odpovězeno 09/12/2008 v 14:43
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more