Was ist der Unterschied zwischen Ruhezustand.jdbc.fetch_size und hibernate.jdbc.batch_size?
Versuche ich tune meine Anwendung kam in einigen blogs sprechen über die batch-hol-und batch-wählen Sie und setzen mein Verständnis wie folgt.
hibernate.jdbc.fetch_size
- Verwendet, um geben Sie die Anzahl der Zeilen, die abgerufen werden, in einer select-Abfrage.hibernate.jdbc.batch_size
- Verwendet, um geben Sie die Anzahl der Einfügungen oder Aktualisierungen durchgeführt werden, die in einer einzigen Datenbank-Treffer.
Bitte lassen Sie mich wissen, ob mein Verständnis korrekt ist oder nicht? Auch was die die optimalen Werte für die oben genannten Parameter..
- Mein Verständnis ist, dass fetch_size zu tun hat mit lazy loading von Sammlungen, während batch_size zu tun hat, mit Dosier-Dinge, wie batch-Einfügungen oder batch-updates. Soweit die "optimalen Werte" gehen, ich denke, das ist ein tuning-Thema, das von Fall zu Fall.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese beiden Optionen festlegen der Eigenschaften innerhalb der JDBC-Treiber. Im ersten Fall
hibernate.jdbc.fetch_size
setzt die Anweisung fetch-Größe, die innerhalb der JDBC-Treiber, das ist die Anzahl der Zeilen geholt, wenn es mehr als nur eine Zeile Ergebnis für select-Anweisungen.Im zweiten Fall
hibernate.jdbc.batch_size
bestimmt die Anzahl der updates (Einfügungen, Aktualisierungen und Löschvorgänge), die gesendet werden, um die Datenbank auf einen Zeitpunkt für die Ausführung. Dieser parameter ist erforderlich, zu tun, batch-inserts, aber muß gepaart sein mit der bestellten Beilagen parameter und der JDBC-Treiber mit der Fähigkeit, zu schreiben, die Einsätze in einem batch-insert-Anweisung.Sehen dieser link
Ihre Annahmen korrekt sind.
überwintern.jdbc.fetch_size
Den
hibernate.jdbc.fetch_size
Hibernate-Konfigurations-Eigenschaft wird verwendet für die Einstellung der JDBC -- Anweisung#setFetchSize
Eigenschaft für jede Aussage, die von Hibernate verwendet, die während der aktuell Laufenden Persistenz-Kontext.In der Regel, die Sie nicht brauchen, um diese Eigenschaft festzulegen, wie der Standard in Ordnung, vor allem für MySQL und PostgreSQL, die Holen den gesamten
ResultSet
in einer einzigen Datenbank-Rundreise. Weil Hibernate durchläuft die gesamteResultSet
Sie besser abrufen, alle Zeilen in einem einzigen Schießen anstatt mehrere Rundfahrten.Nur für Oracle-möchten Sie vielleicht, um es da die Standard-fetch-Größe ist 10. Für mehr details, schauen Sie sich dieser Artikel.
überwintern.jdbc.batch_size
Den
hibernate.jdbc.batch_size
Eigenschaft wird verwendet, um batch mehrere EINFÜGEN< UPDATE-und DELETE-Anweisungen zusammen, so dass Sie können in eine einzelne Datenbank aufrufen.Wenn Sie diese Eigenschaft einstellen, sind Sie besser dran, setiing diese beiden als gut:
hibernate.order_inserts
zutrue
hibernate.order_updates
zutrue
Für mehr details schauen Sie sich diese zwei Artikel:
Fetch-Größe nicht
Statement.setFetchSize()
während der batch-Größe für Hibernate Batchverarbeitung. Beide Konfigurations-Parameter werden erklärt hier. Für hibernate batch verweisen hierDein Verständnis scheint ganz korrekt. Ich würde verweisen Sie auf der JBOSS-Dokumentation auf Ruhezustand, werden im folgenden Kapitel wird auf Batch-Verarbeitung. Und dieses auf optimieren der Leistung.
Es ist eine gute, einfach zu lesende Quelle. Es gibt einige Vorschläge für optimale Werte, sondern als CodeChimp erwähnt, tuning erfolgt am besten von Fall zu Fall und ist eine wiederholbare Prozess im Laufe der Zeit.