Ich habe eine Anwendung, die NHibernate als ORM verwendet, und manchmal kommt es zu Leistungsproblemen aufgrund der Art und Weise, wie die Daten von ihr abgerufen werden. Was kann man tun, um die Leistung von NHibernate zu verbessern? (Bitte beschränken Sie sich auf eine Empfehlung pro Antwort)
Antworten
Zu viele Anzeigen?Zwischenspeichern, Zwischenspeichern, Zwischenspeichern -- Verwenden Sie Ihr First-Level-Caching richtig [vorzeitiges Schließen von Sitzungen oder Verwendung von StatelessSession zur Umgehung des First-Level-Cachings]? Müssen Sie einen einfachen Cache der zweiten Ebene für Werte einrichten, die sich nur selten ändern? Können Sie Abfrageergebnissätze zwischenspeichern, um Abfragen zu beschleunigen, die sich nur selten ändern?
[Auch Konfiguration - können Sie Elemente als unveränderlich festlegen? Können Sie Abfragen so umstrukturieren, dass nur die benötigten Informationen zurückgegeben werden, und diese in die ursprüngliche Entität umwandeln? Wird Batman in der Lage sein, den Riddler aufzuhalten, bevor er den Damm erreicht?]
Was lotsoffreetime sagte.
Lesen Sie Kapitel 19 der Dokumentation, "Verbesserung der Leistung".
NHibernate: http://nhibernate.info/doc/nhibernate-reference/performance.html
Hibernate: http://docs.jboss.org/hibernate/core/3.3/reference/en/html/performance.html
Verwenden Sie SQL Profiler (oder ein gleichwertiges Programm für die von Ihnen verwendete Datenbank), um langlaufende Abfragen zu finden. Optimieren Sie diese Abfragen mit geeigneten Indizes.
Für Datenbankaufrufe, die auf fast jeder einzelnen Seite einer Anwendung verwendet werden, verwenden Sie CreateMultiQuery, um mehrere Ergebnissätze aus einer einzigen Datenbankabfrage zurückzugeben.
Und natürlich der Cache. Die OutputCache-Direktive für Seiten/Steuerelemente. NHibernate-Caching für Daten.
- See previous answers
- Weitere Antworten anzeigen