Was sollte mit schweren geladenen Datenbanken mit Unter wählt in Abfragen in Betracht gezogen werden?

StackOverflow https://stackoverflow.com/questions/520595

Frage

Wir entwickeln eine Anwendung mit einer Persistenz-Schicht mit OpenJPA1.1 und einer Oracle-DB als Backend Speicher. Ich werde Abfragen mit Subselects verwenden (meine Frage an Solving sehen JPA Query Suche nach dem letzten Eintrag in verbundener Liste ).

Nun meine Kollegen bei der Arbeit Bemerkung, dass solche Anfragen zu Performance-Problemen führen können, da die Datenbank mit Tausenden von Kundendatum von einem paar tausend gleichzeitigen Benutzern verwendeten gefüllt ist (die Realität in der Produktion sein wird).

Also, meine Frage ist: Gibt es ein "best practice" mit subselects in Abfragen unter diesen Umständen? Und was muss, indem Sie diese in Betracht gezogen werden?

War es hilfreich?

Lösung

Ich würde zuerst beweisen, dass es ein Problem ist. Sie wollen die Datenbank mit Dummy-Daten laden und sehen, wie Ihre Abfragen durchführen, da die Datenbank größer wird. Sonst Zeit Sie verbringen etwas zu optimieren, dass das kein Problem sein kann.

Eine Sache zu denken. In allen Orten, die ich gearbeitet habe, wo die Dinge auseinander fallen nicht Tausende von Datensätzen, aber Millionen. Sie haben dieses System erhalten, und es funktioniert für eine Weile in Ordnung und dann beginnen nur verlangsamen, auch wenn Sie mehr Hardware an ihn werfen. Der Ort, wo ich jetzt gerade arbeite hat etwa 70 Millionen Datensätze in seiner Geschichte Tabelle aus dem Jahr 1998. Leistung auf einigen Abfragen ist schrecklich als Folge und sie viel Zeit verbringen, um diese Probleme zu arbeiten.

Aber irgendwann Sie wirklich fragen müssen. Müssen wir Daten von mehr als 4 Jahre alt in unserem Transaktionssystem halten? Oder sogar 4 Monate alt? Diese Frist hängt von Ihrem Unternehmen benötigen, aber wenn Sie halten Ihr Transaktionssystem mit nur die Daten, die benötigt wird, die laufenden Arbeiten zu verarbeiten ... und Archiv in einem Data Warehouse Ihre historischen Aufzeichnungen. Sie werden Ihre Gesamtleistung verbessern, weil die Chancen ist es nur gelegentlich Sie, dass alte Daten abfragen müssen, warum halten Sie es mit Ihren aktuellen Daten?

Wenn Sie darüber nachdenken, nach vorne, werden Sie eine Menge Kopfschmerzen langfristig speichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top