Postgresql deadlocks

Tomas Vondra tv na fuzzy.cz
Pátek Březen 2 19:58:34 CET 2012


On 2.3.2012 16:12, Tomáš Krbec wrote:
> Zdravím,
> 
> myslím si, že deadlocky nelze úplně vymýtit, takže je potřeba, aby se
> aplikace s nimi dokázala vyrovnat.
> 
> 
> S pozdravem
> Tomáš Krbec

Víceméně jediné co aplikace může udělat je zkusit to znovu - to asi jde
v případě ojedinělých výskytů deadlocků, ale někdy ani to ne (např.
pokud aplikace komunikuje s dalšími systémy - např. nelze jen tak znovu
provést stejný požadavek např. na rezervaci letenky).

Co se týká úprav aplikace, už jsem psal že "stačí" zamykání provádět v
jednotném pořadí, byť to samozřejmě nejde udělat vždy (např. pokud není
předem zřejmé co vše bude nutné updatovat/zamknout).

Někdy lze ale změny "nasyslit" bokem a reálně je provést až úplně na
konci (v kombinaci s optimistickým zamykáním).

Alternativou je např. zavedení nějakého globálního aplikačního zámku
pomocí kterého se transakce budou serializovat (což je jistě nepříjemné
ale často je to přijatelnější než důsledky deadlocků).

Tomáš


Další informace o konferenci Linux