-->
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.  [ 4 posts ] 
Author Message
 Post subject: prepared statements nutzen
PostPosted: Mon Nov 20, 2006 10:06 am 
Newbie

Joined: Thu Jun 08, 2006 5:36 pm
Posts: 7
Hallo,

ich habe eine Frage zu prepared statements: Und zwar sehe ich im MySQL-Logfile bei den Queries, dass dasselbe Query mehrere Male prepared wird:
Code:
                     13 Query       SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
                     13 Prepare     [266] select rechnung0_.id as id10_, rechnung0_.id_lieferant as id2_10_, rechnung0_.rechnungsnummer as rechnung3_10_, rechnung0_.id_zahlungsbedingung as id4_10_, rechnung0_.eingangsdatum as eingangs5_10_, rechnung0_.buchungsperiode as buchungs6_10_, rechnung0_.rechnungsdatum as rechnung7_10_, rechnung0_.belegnummer as belegnum8_10_, rechnung0_.status as status10_, rechnung0_.bemerkung as bemerkung10_, rechnung0_.buchungsdatum_timestamp as buchung11_10_, rechnung0_.buchungsdatum_user_benutzername as buchung12_10_, rechnung0_.zahlungsdatum_timestamp as zahlung13_10_, rechnung0_.zahlungsdatum_user_benutzername as zahlung14_10_, rechnung0_.genehmigungsdatum_timestamp as genehmi15_10_, rechnung0_.genehmigungsdatum_user_benutzername as genehmi16_10_, rechnung0_.timestamp as timestamp10_, rechnung0_.user_benutzername as user18_10_, rechnung0_.anlagezeitpunkt_timestamp as anlagez19_10_, rechnung0_.anlagezeitpunkt_user_benutzername as anlagez20_10_, rechnung0_.zahlungsart as zahlung21_10_, rechnung0_.rabatt as rabatt10_, rechnung0_.gezahlterBetrag as gezahlt23_10_, rechnung0_.skontoWurdeGezogen as skontoW24_10_, rechnung0_.immerSkontoZiehen as immerSk25_10_, rechnung0_.faelligAm as faelligAm10_, rechnung0_.mindermengenzuschlag as minderm27_10_, rechnung0_.id_mwst_mindermengenzuschlag as id28_10_, rechnung0_.buchungstext as buchung29_10_ from tb_rechnungen rechnung0_ where rechnung0_.status=?
                     13 Execute     [266] select rechnung0_.id as id10_, rechnung0_.id_lieferant as id2_10_, rechnung0_.rechnungsnummer as rechnung3_10_, rechnung0_.id_zahlungsbedingung as id4_10_, rechnung0_.eingangsdatum as eingangs5_10_, rechnung0_.buchungsperiode as buchungs6_10_, rechnung0_.rechnungsdatum as rechnung7_10_, rechnung0_.belegnummer as belegnum8_10_, rechnung0_.status as status10_, rechnung0_.bemerkung as bemerkung10_, rechnung0_.buchungsdatum_timestamp as buchung11_10_, rechnung0_.buchungsdatum_user_benutzername as buchung12_10_, rechnung0_.zahlungsdatum_timestamp as zahlung13_10_, rechnung0_.zahlungsdatum_user_benutzername as zahlung14_10_, rechnung0_.genehmigungsdatum_timestamp as genehmi15_10_, rechnung0_.genehmigungsdatum_user_benutzername as genehmi16_10_, rechnung0_.timestamp as timestamp10_, rechnung0_.user_benutzername as user18_10_, rechnung0_.anlagezeitpunkt_timestamp as anlagez19_10_, rechnung0_.anlagezeitpunkt_user_benutzername as anlagez20_10_, rechnung0_.zahlungsart as zahlung21_10_, rechnung0_.rabatt as rabatt10_, rechnung0_.gezahlterBetrag as gezahlt23_10_, rechnung0_.skontoWurdeGezogen as skontoW24_10_, rechnung0_.immerSkontoZiehen as immerSk25_10_, rechnung0_.faelligAm as faelligAm10_, rechnung0_.mindermengenzuschlag as minderm27_10_, rechnung0_.id_mwst_mindermengenzuschlag as id28_10_, rechnung0_.buchungstext as buchung29_10_ from tb_rechnungen rechnung0_ where rechnung0_.status=2
                     13 Query       commit
                     13 Query       SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
                     13 Prepare     [267] select rechnung0_.id as id10_, rechnung0_.id_lieferant as id2_10_, rechnung0_.rechnungsnummer as rechnung3_10_, rechnung0_.id_zahlungsbedingung as id4_10_, rechnung0_.eingangsdatum as eingangs5_10_, rechnung0_.buchungsperiode as buchungs6_10_, rechnung0_.rechnungsdatum as rechnung7_10_, rechnung0_.belegnummer as belegnum8_10_, rechnung0_.status as status10_, rechnung0_.bemerkung as bemerkung10_, rechnung0_.buchungsdatum_timestamp as buchung11_10_, rechnung0_.buchungsdatum_user_benutzername as buchung12_10_, rechnung0_.zahlungsdatum_timestamp as zahlung13_10_, rechnung0_.zahlungsdatum_user_benutzername as zahlung14_10_, rechnung0_.genehmigungsdatum_timestamp as genehmi15_10_, rechnung0_.genehmigungsdatum_user_benutzername as genehmi16_10_, rechnung0_.timestamp as timestamp10_, rechnung0_.user_benutzername as user18_10_, rechnung0_.anlagezeitpunkt_timestamp as anlagez19_10_, rechnung0_.anlagezeitpunkt_user_benutzername as anlagez20_10_, rechnung0_.zahlungsart as zahlung21_10_, rechnung0_.rabatt as rabatt10_, rechnung0_.gezahlterBetrag as gezahlt23_10_, rechnung0_.skontoWurdeGezogen as skontoW24_10_, rechnung0_.immerSkontoZiehen as immerSk25_10_, rechnung0_.faelligAm as faelligAm10_, rechnung0_.mindermengenzuschlag as minderm27_10_, rechnung0_.id_mwst_mindermengenzuschlag as id28_10_, rechnung0_.buchungstext as buchung29_10_ from tb_rechnungen rechnung0_ where rechnung0_.status=?
                     13 Execute     [267] select rechnung0_.id as id10_, rechnung0_.id_lieferant as id2_10_, rechnung0_.rechnungsnummer as rechnung3_10_, rechnung0_.id_zahlungsbedingung as id4_10_, rechnung0_.eingangsdatum as eingangs5_10_, rechnung0_.buchungsperiode as buchungs6_10_, rechnung0_.rechnungsdatum as rechnung7_10_, rechnung0_.belegnummer as belegnum8_10_, rechnung0_.status as status10_, rechnung0_.bemerkung as bemerkung10_, rechnung0_.buchungsdatum_timestamp as buchung11_10_, rechnung0_.buchungsdatum_user_benutzername as buchung12_10_, rechnung0_.zahlungsdatum_timestamp as zahlung13_10_, rechnung0_.zahlungsdatum_user_benutzername as zahlung14_10_, rechnung0_.genehmigungsdatum_timestamp as genehmi15_10_, rechnung0_.genehmigungsdatum_user_benutzername as genehmi16_10_, rechnung0_.timestamp as timestamp10_, rechnung0_.user_benutzername as user18_10_, rechnung0_.anlagezeitpunkt_timestamp as anlagez19_10_, rechnung0_.anlagezeitpunkt_user_benutzername as anlagez20_10_, rechnung0_.zahlungsart as zahlung21_10_, rechnung0_.rabatt as rabatt10_, rechnung0_.gezahlterBetrag as gezahlt23_10_, rechnung0_.skontoWurdeGezogen as skontoW24_10_, rechnung0_.immerSkontoZiehen as immerSk25_10_, rechnung0_.faelligAm as faelligAm10_, rechnung0_.mindermengenzuschlag as minderm27_10_, rechnung0_.id_mwst_mindermengenzuschlag as id28_10_, rechnung0_.buchungstext as buchung29_10_ from tb_rechnungen rechnung0_ where rechnung0_.status=3
                     13 Query       commit

Das kann und sollte eigentlich nicht sein, oder? Kann ich Hibernate oder JDBC irgendwo sagen, dass er prepared statements cachen soll und damit er sie nicht immer wieder neu erstellt?

thx
phoku


Top
 Profile  
 
 Post subject:
PostPosted: Mon Nov 20, 2006 10:18 am 
Senior
Senior

Joined: Fri May 14, 2004 9:37 am
Posts: 122
Location: Cologne, Germany
QueryCache benutzen. Verwendung siehe Doku.

_________________
regards

Olaf

vote if it helped


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 21, 2006 7:16 am 
Newbie

Joined: Thu Jun 08, 2006 5:36 pm
Posts: 7
In meinen hibernate.properties habe ich:
Code:
hibernate.cache.use_query_cache             true
Von daher sollte der QueryCache an sein, oder? Trotzdem sehe ich im MySQL-Log immer ein prepare, bevor ein execute kommt. Komisch. Eigentlich sollte er statements nur einmal preparen, weil sonst auch die Performance darunter leidet, oder?


Top
 Profile  
 
 Post subject:
PostPosted: Tue Nov 28, 2006 4:49 pm 
Newbie

Joined: Sat May 14, 2005 11:19 am
Posts: 14
Damit der Query-Cache an ist, müssen auch zwei Regionen in EhCache angelegt werden (für Einzelheiten siehe Hibernate-Doku). Ob Hibernate den Query-Cache benutzt siehst Du, wenn beim Erzeugen der SessionFactory der Log-Level auf Info steht. Dann listet Hibernate einige Einstellungen (u.a. auch das Verwenden des Query-Caches) auf.


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 4 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.