2012-05-25 10 views
6

Ich habe Tausende von Datensätzen, die bei einem einzigen Benutzerklick abgerufen werden müssen. Momentan gibt es mir die Ergebnisse sehr langsam, ich muss lange warten. Gibt es eine Möglichkeit, das Abrufen dieser Ergebnisse mithilfe von Hibernate zu verbessern?Wie kann ich die Hibernate-Leistung in Java verbessern?

Ich habe einen Fall, in dem eine Methode, die eine Select-Abfrage hat, jede einzelne Minute ausgeführt wird. Dies ist, wo Hibernate mir das langsame Ergebnis gibt. Ich benutze Hibernate mit MySQL.

+2

Das ist ein bisschen wie zu sagen "Wie lang ist ein Stück Schnur?". Wir benötigen mehr Details darüber, was Ihr HQL ist. Nur eine einfache "Where" -Klausel könnte die Dinge dramatisch beschleunigen. – david99world

+0

Verwenden Sie Caching? (hibernate.cache.user_query_cache = true) – stzoannos

+0

Abrufen von vielen Daten aus einer Datenbank ist nur langsam, Hibernate oder nicht. Reduzieren Sie die Anzahl der Zeilen, die Sie abrufen, indem Sie ihnen z. B. ein paar hundert Zeilen präsentieren. Ihre Benutzer können sowieso nicht alle 10000 Zeilen gleichzeitig betrachten, daher hat es keinen Sinn, ihnen so viele Informationen zu präsentieren. – dasblinkenlight

Antwort

6

Gängige Praxis 2. Level-Cache und Abfrage-Cache wird ermöglicht von sagen auf einmal Teil der Datensätze abzurufen. Dann werden Ihre Daten aus dem Speicher gelesen, nicht aus db.

Guter Artikel über sie here

Andere Dinge kann hilfreich sein:

1 Indizierung - falls es wo und Bestellung - Sie haben zu bauen Indizes für Felder, die Sie suchen/Bestellung - dies kann verbessern Suche beschleunigen 10 mal

2 Denormalisierung - wenn Sie viele Verbindungen haben, kann einige Denormalisierung (Putting alle in einzelne Tabelle) helfen. Aber dies sollte die endgültige Lösung sein, wenn alles andere fehlschlägt.

+0

Vielen Dank, ich werde versuchen, diese –

+0

Ich habe einen Fall, in dem eine Methode, die Abfrage auswählen wird jede Minute ausgeführt werden. Hier ist der Ruhezustand, der mir langsames Ergebnis gibt –

+0

Wenn der Cache der zweiten Ebene und der Abfrage-Cache aktiviert sind, werden die Elemente nach der ersten Ausführung der Abfrage gefüllt. So kann das erste Mal langsam dauern. Aber nächstes Mal wird es zwischengespeicherte Werte verwenden. Lesen aus dem Speicher wird schneller sein – alexey28

1

Ich würde vorschlagen, Sie Pagination gehen, wenn Sie die Datensätze auf einer Webseite angezeigt werden müssen und 100.

Verwandte Themen