Sperrungen auf Tabellen (S-LOCK,X-LOCK)
- Dieses Thema hat 2 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 11 Jahre, 5 Monaten von
Anonym.
-
AuthorPosts
-
16. März 2012 um 13:54 Uhr #4150
AnonymInaktivHAllo zusammen
Wir haben folgendes Problem:
Eine Anwendung liest mit Multi-Fetch Row alle Zeilen einer Tabelle ändert aber nur einen ganz bestimmten Bereich .
sagen wir Zeile 1-10000 und endet dann.Nun wird dasselbe Programm paralell gestartet und diese Programm liest ebenfalls die ganze Tabelle ändert aber einen anderen Bereich derselben Tabelle also Bsp: 10001-20000.
Das Package ist mir CS gebunden und es kommt immer wieder zu DEADLOCKS.
Meine Frage nun: Warum kommen die Deadlocks ?
Beide Programm lesen zwar diesselben zeilen ändern aber jeweils einen anderen bereich.Die tabelle ist mit LOCKSIZE ROW definiert
Gruß
Zefrim
21. März 2012 um 20:31 Uhr #4291
AnonymInaktivHi Zefrim,
um das zu beurteilen, bräuchten wir noch ein paar weitere Infos, z.B.:
Wie lautet die genaue Cursor-Definition ?
( STATIC , DYNAMIC , WITH HOLD , FOR UPDATE OF … )werden zu Beginn ALLE Zeilen der Tabelle auf einmal gelesen oder gibts mehrere FETCH ROWSETs ?
erfolgt die Änderung der Daten über den Cursor ( also mit UPDATE … WHERE CURRENT OF cursor ) oder mit separatem UPDATE-Statement ?
Ist das Package mit CURRENT DATA YES oder NO gebunden ?
Gibts im Master Hinweise auf Lock-Escalation ?
Kommen die Deadlocks sporadisch oder regelmässig ?
Welche DB2-Version ist im Einsatz ?
Gruß
Uli
25. April 2012 um 11:28 Uhr #4391
AnonymInaktivHallo Zefrim,
eigentlich sollte das funktionieren. Hört sich nach Lock-Escalation an, ist der Resource-Type beim Deadlock Table, Tablespace oder Partition? Testweise vlt. mal den TS auf LOCKMAX 0 altern. Commits werden regelmäßig gemacht?
Gruß, Rolf
-
AuthorPosts
You must be logged in to reply to this topic.