nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Re: Tabelle bleibt gesperrt nach statement.close()

Von: chris (dontspam1@gmx.net) [Profil]
Datum: 05.10.2008 18:18
Message-ID: <gcapc6$qkq$00$1@news.t-online.com>
Newsgroup: de.comp.lang.java
Lothar Kimmeringer wrote:
> chris wrote:
> 
>> ich habe eine Anwendung geschrieben die Daten aus einer DB verarbeitet
.
>> (DB/2 AS400) Nun ist mir aufgefallen, daß die Tables gesperrt bleibe
n,
>> wenn sie einmal in einem select benutzt wurden, obwohl alle statements

>> von mir immer sofort mit statement.close() geschlossen werden, nachdem

>> die Daten eingelesen wurden.
> 
> Das kenne ich so als Verhalten eigentlich nur dann, wenn man eine
> Transaktion beginnt (setAutocommit(false)). Ein connection.commit()
> fuehrt bei DB/400 naemlich zur Ausfuehrung von "COMMIT HOLD", d.h.
> bestehende Locks werden nicht aufgeloest. Man muss tatsaechlich
> ein eigenes Statement aufmachen und "commit" ausfuehren, damit
> der Lock freiwird.
> 
> Bei manchen AS/400-Systemen bleibt die Tabelle dann aber weiterhin
> als gelockt in der Uebersicht, jedoch verschwindet dieser in dem
> Moment, wenn ein anderer Job darauf zugreift.
> 
>> Macht das Sinn?? Wie kann ich das Locking-Verhalten der Anwendung 
>> verbessern?
> 
> Die junit-Treiber haben eine ganze Reihe von Parametern. Evtl. ist da
> auch einer fuer Dich dabei ;-)
> 
> 
> Gruesse, Lothar

Hallo,
danke für die Anregungen.
Das scheint mir eine Art Optimierung der Datenbank zu sein. Nach dem
ersten Read ist die Tabelle nicht gesperrt. Aber sobald der gleiche
Select auf dieser Connection (mit einem neuen frischen Statement)
ausgeführt wird, ist die Tabelle gesperrt. Habs jetzt mit einem kleinen

Testprog. ausprobiert:
Lesen in Tabelle A --> keine Locks
Lesen in Tabelle B --> keine Locks
Lesen in Tabelle C --> keine Locks
Lesen in Tabelle A --> A ist gelockt, B und C nicht
Lesen in Tabelle B --> A und B ist geleockt
usw.
Das nervt, weil jetzt immer den ganzen Tag die Tabellen gelockt sind und

nicht geändert werden können.

Noch jemand eine Idee?

danke
Christopher






[ Auf dieses Posting antworten ]

Antworten