[Technik] hsadmin reloaded: JPA/Hibernate/PostgreSQL Probleme

Christof Donat cd at actsoft.de
Thu Jul 19 16:16:56 CEST 2007


Hi,

> > Vermutung: Da werden Transaktionen geschachtelt und die innere braucht
> > was, was die äußere gelocked hat. Ich frage mich aber, wozu man bei
> > PostgreSQL anfangen sollte, Locks zu setzen?
>
> Das macht PostgreSQL automatisch, wenn Daten in einer Transaktion
> geschrieben werden.

Jein. PostgreSQL braucht nur für seltene Fälle wirklich Locks. Ein solcher 
Fall wäre z.B. ein ALTER TABLE Statement, also wirklich Sachen, die man eher 
selten macht. Das bedeutet, dass in der äußeren Transaktion eine Zeile in 
einer Tabelle gesperrt sein müsste, für die dann die innere Transaktion eine 
solche Aktion starten möchte. Dann wartet die innere Transaktion darauf, dass 
die Äußere den Lock freigibt. Damit sowas passiert, muss die äußere 
Transaktion entweder Sachen machen, die für die Transaktionssicherheit Locks 
brauchen (das ist bei PostgreSQL sehr wenig), oder explizit Locks setzen.

Innerhalb der gleichen Transaktion haben die Locks natürlich keine 
Auswirkungen, es müssen schon zwei da sein für einen Deadlock. Wenn du nur 
eine gesehen hast, tippe ich auf eine geschachtelte Transaktion.

In jedem Fall setzt die JPA Implementation die Statements ab, die PostgreSQL 
in den Deadlock treiben. Dazu muss man sich im Allgemeinen schon anstrengen, 
also z.B. explizit Locks setzen.

> Bis jetzt habe ich doch quasi nur die JPA-Sachen implementiert (hunderte
> von Annotationen an den Entity-Klassen), die müsste man alle austauschen.

OK, dann ist das jetzt keine Alternative mehr :-(

> Ich sehe darin auch keinen Grund.

Ich dachte nur, dass man so herausfinden kann, ob tatsächlich JPA irgendwelche 
komischen Sachen macht, oder ob es ein Muster im Ablauf ist, das du 
programmiert hast und beidem jeder OR-Mapper in einen Deadlock laufen muss.

Christof

-- 
actSoft gmbh                                 Software nach Maß

Zugspitzstr. 211                                www.actsoft.de
86165 Augsburg                                   cd at actsoft.de

                                      Registergericht Augsburg
Geschäftsführer                             Augsburg HRB 21896
Christof Donat                           UStID: DE 248 815 055


More information about the Technik mailing list