Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Transaction deadlock

[es] :: MS SQL :: Transaction deadlock

[ Pregleda: 3219 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kernel82

Član broj: 36093
Poruke: 58
*.pinsoft.com.



Profil

icon Transaction deadlock02.11.2007. u 14:55 - pre 157 meseci
Da li je neko imao iskustvo sa zakljucavanjem transakcija pod SQL serverom u slucaju kada se u jednoj transakciji radi SELECT i UPDATE nad jednom tabelom ali ne nad istim redovima.

Ono sto je problem sto MS SQL server prilikom konkurentnog izvrsavanja nad tom tabelom jednu od transakcija proglasi da izaziva dead lock i ponisti je, dok se ostale izvrse bez problema.
Walk on, walk on
with hope in your hearts
And you'll never walk alone
You'll never walk alone.
 
Odgovor na temu

miq357
ISP Teh support
Beograd

Član broj: 56733
Poruke: 72
*.beogrid.net.

ICQ: 295440586


Profil

icon Re: Transaction deadlock04.11.2007. u 00:54 - pre 157 meseci
Iz ovoga je očigledno da neka transakcija pokušava da preuzme kontrolu nad nekim resursom koji je već zaključan od strane druge transakcije. To što se transakcije ne izvršavaju nad istim redovima u tabeli nije od presudnog značaja jer verovatno to nije jedina tabela u bazi i verovatno je povezana sa nekim drugim tabelama, a to može da utiče na mnogo stvari.
Sem toga u MS SQL Serveru posoje mnoge opcije za podešavanje načina kako sistem kontroliše konkurentno izvršavanje, da citiram:
"Microsoft SQL Server 2005 supports a range of concurrency control. Users specify the type of concurrency control by selecting transaction isolation levels for connections or concurrency options on cursors. These attributes can be defined using Transact-SQL statements, or through the properties and attributes of database application programming interfaces .... "
Ja do sad nisam baš imao nekih problema sa time obzirom da obe baze koje sad koristim imaju vrlo malo upisa u odnosu na čitanje podataka tako da je "dead lock" situacija praktično skoro nemoguća, mada sam u testiranju uspeo da izazovem par zaključavanja pod uslovima koji se u praksi ne dešavaju, pa mi ni iskustva sa ovim nisu baš sveža.
U svakom slučaju preporučujem da pregledaš podešavanja izolacionih nivoa i konkurentnosti kurzora, a za nalaženje uzroka "dead locka" možeš da upotrebiš "SQL Server Profiler" i pregledaš logove grešaka.
iako se ovakvi problemi ne mogu potpuno eliminišu postoji skup pravila u radu koji verovatnoću za pojavu deadlokova smanjuje na najmanju meru, pa samim tim povećava i efikasnost funcionisanja celog sistema ali to je već preobimna tema za jedan odgovor na pitanje na koje ionako nije moguće dati kompletan odgovor.
 
Odgovor na temu

kernel82

Član broj: 36093
Poruke: 58
*.pinsoft.com.



Profil

icon Re: Transaction deadlock05.11.2007. u 09:46 - pre 157 meseci
Otprilike sam i ja naisao na slicna odgovore na stranim sajtovima. Ono sto mi je kod svega najcudnije je da aplikacija bez takvih problema radi pod Oracle, PostgreSQL kao i MySQL sa InnoDB, dakle SQL server definitivno radi neke stvari na samo njemu specifican zahtev. Cak i da se problem resi tako sto ce se podesavati nivo izolacije transakcija nigde se ne garantuje da to takvih problema nece doci, a ovo moze biti jako problematicno u koliko se na aplikaciji ocekuje velik broj konkurentnih zahteva.
Walk on, walk on
with hope in your hearts
And you'll never walk alone
You'll never walk alone.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 891
77.46.159.*



+171 Profil

icon Re: Transaction deadlock05.11.2007. u 11:36 - pre 157 meseci
Mozes biti ubedjen da samo SQL Server ima tih problema. Hej, poredis ga sa nekim RDBMS-ovima koji ne mogu ni da urade live backup. Da je to tako kao sto pricas onda bi deadlock pojam bio striktno vezan za SQL server i za nikog vise. Pogledaj ovaj link. Jedini nacin da se izbegne deadlock bi bio da sve ide na exclusive lock, ili da svaku transakciju na SQL serveru izvrsavas preko TRANSACTION ISOLATION LEVEL SERIALIZABLE ali naravno, ovo tesko da je izvodljivo, jer bi dobio samo niz seriajlizovanih operacija, sto ima da ukopa server u visoko konkurentnom okruzenju. Naravno, za ovo je najbolji heuristicki metod resavanja :)
 
Odgovor na temu

kernel82

Član broj: 36093
Poruke: 58
*.pinsoft.com.



Profil

icon Re: Transaction deadlock05.11.2007. u 14:27 - pre 157 meseci
Citat:
negyxo: Hej, poredis ga sa nekim RDBMS-ovima koji ne mogu ni da urade live backup. Da je to tako kao sto pricas onda bi deadlock pojam bio striktno vezan za SQL server i za nikog vise.


poredim ga sa RDMBS-ovima pod kojima aplikacija treba da radi. :( Nema mi smisla da se tako nesto nikad ne desi pod Oracle (i to jos 10g express), dok je takvu situaciju prilicno lako izazvati kod Microsofta.
Walk on, walk on
with hope in your hearts
And you'll never walk alone
You'll never walk alone.
 
Odgovor na temu

negyxo
Aleksandar Perkuchin

Član broj: 29751
Poruke: 891
77.46.159.*



+171 Profil

icon Re: Transaction deadlock05.11.2007. u 17:08 - pre 157 meseci
Citat:

dok je takvu situaciju prilicno lako izazvati kod Microsofta.


Microsoft? To je neki novi RDBMS?

Pa dao sam ti link za Oracle gde se vidi kako je i tamo moguc deadlock. Cak i pise 'best practice' koji je najsigurniji nacin da se izbegne deadlock koji je, da ne verujes, isti kao i za MS SQL a verovatno i za sve ostale baze. Vidi, necu ja ovde da svodim pricu SQL Server vs Oracle, (mada vesto si se dohvatio proroka, situacija sa svim drugim RDBMS-ovima nije tako svetla kao sa oracle-om - ne mislim samo na deadlock-ove) nego na to da deadlock-ovi svuda postoje ukoliko hoces da dozvolis shared lock-ove, kako god se zovu na drugim RDBMS-ovima.

 
Odgovor na temu

[es] :: MS SQL :: Transaction deadlock

[ Pregleda: 3219 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.