Registriert seit: 14. Aug 2004
1.439 Beiträge
Delphi 2007 Professional
|
Firebird:deadlock - update conflicts with concurrent update
13. Feb 2006, 10:57
Datenbank: FireBird • Version: 1.5 • Zugriff über: IBX
Ich verwende IBX mit Firebird 1.5 und alles läuft (lief) problemlos.
Jetzt habe ich das Problem, da mehrere User gelichzeitig arbeiten, das ich öfters (mehrmals am Tag) einen deadlock bekomme.
Mir ist klar warum der deadlock kommt, und dagegen werde ich auch nix machen können (da es ja in der Natur der Datenbank liegt)
Ich werde zwar probieren die Transactionen zu verkürzen, (also immer wieder zwischendurch ein CommitRetaining machen) aber als 100% Lösung passt es trotzdem nicht.
Wie kann man solche Deadlocks am besten "umschiffen" ?
Bei 95% der Deadlocks bzw. UPDATE's könnte man einfach sagen, das sich diese UPDATES gar nicht gegenseitig behindern (User 1 ändert Feld A und User 2 nur Feld B) und trotzdem kommt ein deadlock, also würde ein zweites mal Update mit den selben daten reichen.
Oder das zweite Update ist das, das wichtiger ist.
Die restlichen 5% müssten zuvor wieder aus der Datenbank ausgelesen werden und erneut entscheidungen getroffen werden (nur Programmintern - keine Userentscheidung)
Gibt es Codefragemente wie man das mit IBX lösen kann ?
Ist es besser JETZT umzusteigen auf andere Komponenten IBO oder UIB oder ... (da diese eventuell besseres Transaction Handling haben ?)
Oder gibt es noch andere bessere Ansätze ...
bin für alle Vorschläge offen
Gruss Hans
2B or not 2B, that is FF
|