-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 8 posts ] 
Author Message
 Post subject: MySQL InnoDB - select puffert ergebnis
PostPosted: Wed Jun 13, 2007 2:05 am 
Newbie

Joined: Wed Jun 13, 2007 1:35 am
Posts: 5
Ich setzt MySQL5 mit InnoDB ein. Wenn ich ein Select mache und danach die Datenbank mit anderen Tools verändere, bekomme ich über hibernate das alte Ergebnis. Ich habe bereits alles deaktiviert, was ich finden konnte (Second Level Cache, etc).

Wenn ich mit Wireshark teste, ob denn überhaupt eine Datenbankabfrage durchgeführt wird, dann sehe ich, dass eine durchgeführt wird, aber der Inhalt einem alten Stand entspricht. Ich habe das Select auch schon in einer Transaktion durchgeführt (was ja eigentlich nicht notwendig ist) und kam zum selben Ergebnis.

Beruflich setzte ich Hibernate mit mssql ein und habe dieses Problem noch nicht gehabt. Mein Verdacht geht in Richtung, dass ich glaube, dass solange die Session irgendwie offen ist, mysql mir das alte Ergebnis zurückliefert. Das ist aber nicht gewünscht.

wenn ich hibernate.connection.pool_size auf 0 setze, dann funktioniert es wie erwartet.. Bug oder Feature? Oder verstehe ich hier etwas falsch?

So langsam habe ich das Gefühl, dass ich mich einfach zu blöd anstelle.

MfG
Michael


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 13, 2007 7:40 am 
Regular
Regular

Joined: Thu Jan 27, 2005 8:58 am
Posts: 80
Hibernate hält an für sich min. eine Session bzw. eine Connection zur DB im Hintergrund offen und greift immer auf diese zu. Aus diesem Grund belibt auch der Cache aktiv.

Dein Problem wird der First-Lvl-Cache sein. Startest Du eine Db-Abfrage mehrmals, so wird beim ersten Zugriff auf die DB zugegriffen. Ab der zweiten Abfrage dagegen kommen die Daten direkt aus dem Cache.
Eine Aktualisierung solltest Du über einen refresh-Befehl bekommen. Ansonsten bekommt Hibernate die Änderungen an der Datenbank über externe Systeme nicht automatisch mit.

_________________
Weise ist nicht, wer viele Erfahrungen macht, sondern wer aus wenigen lernt, viele nicht machen zu müssen. (Karlheinz Deschner)


Top
 Profile  
 
 Post subject: Puffert trotz anderen Daten
PostPosted: Thu Jun 14, 2007 2:22 am 
Newbie

Joined: Wed Jun 13, 2007 1:35 am
Posts: 5
Quote:
Dein Problem wird der First-Lvl-Cache sein. Startest Du eine Db-Abfrage mehrmals, so wird beim ersten Zugriff auf die DB zugegriffen. Ab der zweiten Abfrage dagegen kommen die Daten direkt aus dem Cache.


ich habe vergessen zu erwähnen, dass sich die Abfrage ändert.. es wird als Parameter immer das aktuelle Datum benutzt..

ich habe außerdem mit wireshark mal das Netzwerk belauscht und festgestellt, dass Hibernate sehr wohl die Datenbank abfragt, aber das Ergebniss, was mysql dabei dann zurückliefert immer das selbe ist (trotz anderem Parameter). Wenn ich dann beim Connection Pooling die Anzahl der Verbindungen auf 0 setze (ich gehe davon aus, dass dann das Pooling deaktiviert wird), dann verhält es sich wie gewünscht.

mit nem mssql server hatte ich bisher nicht mal ansatzweise solche interessanten Probleme (ohne damit jetzt sagen zu wollen, dass der server gut ist (geht so)). daher bin ich davon ausgegangen, dass ich hibernate und wie es mit datenbanken arbeitet im Prinzip verstanden habe. Das hier irritiert mich dann aber doch irgendwie.

Möglicherweise hält Hibernate noch irgendwie eine Transaktion offen, so das mysql korrekterweise ein altes Ergebnis zurückliefert.. wobei mich das dann aber irritiert, da ich keine Transaktionen benutzt habe.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 14, 2007 5:26 am 
Regular
Regular

Joined: Thu Jan 27, 2005 8:58 am
Posts: 80
Hat Deine andere Applikation vielleicht ein Transaktionsmanagement welches die Änderungen sperrt?

_________________
Weise ist nicht, wer viele Erfahrungen macht, sondern wer aus wenigen lernt, viele nicht machen zu müssen. (Karlheinz Deschner)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 14, 2007 8:30 am 
Newbie

Joined: Wed Jun 13, 2007 1:35 am
Posts: 5
FPC wrote:
Hat Deine andere Applikation vielleicht ein Transaktionsmanagement welches die Änderungen sperrt?


nunja.. das ist im wesentlichen der mysql-query-browser gewesen..
SQL Squirell (oder wie das Teil heist) hat die Änderungen auch gesehen..

nur halt Hibernate nicht..

ich werde heut mal ein Testsetup machen, wo ich das ganze mal auf ein Minisetup reduziere.. vielleicht finde ich es ja, ansonste könnte das ne Testsuite werden.. :) :)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 14, 2007 8:36 am 
Regular
Regular

Joined: Thu Jan 27, 2005 8:58 am
Posts: 80
Hast Du

Query.setCacheMode(CacheMode.REFRESH)

schon mal ausprobiert?

_________________
Weise ist nicht, wer viele Erfahrungen macht, sondern wer aus wenigen lernt, viele nicht machen zu müssen. (Karlheinz Deschner)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 14, 2007 9:07 am 
Newbie

Joined: Wed Jun 13, 2007 1:35 am
Posts: 5
FPC wrote:
Hast Du

Query.setCacheMode(CacheMode.REFRESH)

schon mal ausprobiert?


nein.. hab ich nicht.., aber teste ich gern..
es ist halt etwas verstörend, wenn ich ein ähnliches Setup mit mssql fahre und diese Probleme nicht habe und solche Workarounds auch nicht benutzt habe,..

wie gesagt. ich mach jetzt mal n Test, mal sehen was da rauskommt..


Top
 Profile  
 
 Post subject: datasource connection pool mysql problem
PostPosted: Sat Jun 16, 2007 7:00 am 
Newbie

Joined: Wed Jun 13, 2007 1:35 am
Posts: 5
Ich habe es herausgefunden..

wenn man hibernate die Verbindungsdaten in der hibernate.cfg.xml übergibt schließt er offensichtlich die Verbindung nicht und bekommt so alte Daten.

Wenn man eine Datasource benutzt, dann funktioniert es mit den selben Einstellungen.

Manchmal sollte man mal reinen Tisch machen und von vorne anfangen. Hat in dem Fall geholfen..


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 8 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.