Es wurde vorgeschlagen, dass, um die Leistung unseres Systems zu verbessern, die Verwendung von Lazy Loading sollte auf der ganzen Linie verwendet werden. Das heißt, das OneToOne-Mapping mit der Eigenschaft "mappedBy" in das @ OneToMany-Mapping zu ändern. Dadurch wird das Laden unerwünschter Daten aus der Datenbank angegangen und gestoppt, was zu einer Langsamkeit der Anwendungen führt.Um Lazy Load oder nicht in Anstrengung, um die Leistung zu verbessern
Wir betreiben ein Multi-Tier-System (im Wesentlichen 2-Tier). Wir haben das Frontend - mit JSF und dem Backend, das die Business- und Datenbankzugriffsschichten enthält. Vorder- und Rückseite kommunizieren EJB - aber EJB haben keine echte Logik in ihnen. Andere Technologie verwendet - Frühling und Hibernate
Jetzt, nach einigem Lesen auf dem Thema, scheint es, dass die Verwendung des faulen Ladens kein Silberkugel darin ist, dass es richtig angewendet werden muss. Für jedes Lazy-Laden wird eine Select-Anweisung ausgegeben, um die Daten abzurufen. Es gibt auch das Problem, dass wenn das Frontend Zugriff auf eine Eigenschaft hat, die Lazy geladen werden soll und die Sitzung/Verbindung am Backend geschlossen wird, dann erhalten wir eine Null.
Ist das obige ein richtiges Problem?
Also, was ist der beste Ansatz/die beste Vorgehensweise bei der Implementierung einer Lazy Loading-Lösung oder Leistungsverbesserung? Die Hoffnung besteht nicht darin, das Datenmodell möglichst wiederherzustellen.
Meine erste Idee war jedoch, mit der DBA-Gruppe zu arbeiten, um ein Ideal zu bekommen, was zwischen den beiden Systemen vor sich geht - wie die Abfragen aussehen, wie wir die Daten verwenden etc. Fehlerpunkte identifizieren, das Hibernate-Objekt untersuchen/Abfragen, um zu sehen, wie sie am besten zu verbessern sind. Auch um das Frontend zu betrachten, um zu bestimmen, was und wie die Daten von der Rückseite an die Front übergeben werden usw.
Guter Ansatz/andere Ansätze?
Ich bin normalerweise falsch, wo ich denke, die Verlangsamungen sind, so habe ich gelernt zu profilieren, anstatt zu erraten. –
@James, yeah, ich wurde zu oft gebissen, um zu versuchen, den Engpass zu erraten. Es ist einfacher, schneller und genauer, den Code irgendwie zu messen, bevor irgendwelche Änderungen vorgenommen werden. – Glen