___ qstnhdr ___ Separate Tabellen / Datenbanken für Reporting- und CRUD-Operationen
___ antwort2312479 ___
Natürlich wird die Transaktionsdatenbank für die meisten Anwendungen der Unternehmensklasse immer getrennt von der Berichtsdatenbank gehalten. Das Transaktionssystem ist auf OLTP abgestimmt, und die Berichtsdatenbank könnte denormalisiert werden, um den Anforderungen der Berichtsszenarien gerecht zu werden. Es ist also fast ein natürlicher Vorschlag.
___ answer2312476 ___
Das klingt nach einer guten Idee. Die einzige Sorge, die ich hätte, ist, müssen Sie alle 10 Minuten aktualisieren? Dies könnte auch während der Ausführung des Updates verlangsamen. Gewöhnlich werden diese über Nacht gemacht (um die geringsten Auswirkungen auf andere zu haben), oder wenn tagsüber an nur 3 festen Punkten (zB 10 Uhr, 13 Uhr und 16 Uhr).
___ tag123sqlserver ___ Microsoft SQL Server ist ein relationales Datenbankverwaltungssystem (RDBMS). Verwenden Sie dieses Tag für alle SQL Server-Editionen, einschließlich Compact, Express, Azure, Fast-Track, APS (früher PDW) und Azure SQL DW. Verwenden Sie dieses Tag nicht für andere Arten von DBMS (MySQL, PostgreSQL, Oracle usw.). Verwenden Sie dieses Tag nicht für Probleme bei der Software- und mobilen Entwicklung, es sei denn, es steht in direktem Zusammenhang mit der Datenbank.
___ qstntxt ___
In regelmäßigen Abständen blockieren Benutzer, die Berichte ausführen, Benutzer, die CRUD-Vorgänge durchführen und Zeitüberschreitungen verursachen. Ich möchte doppelte Positionen der aktuellen Tabellen für die Berichtsbenutzer erstellen.
Ich habe daran gedacht, einen Job zu erstellen, der die Datenbank meiner App sichert und in einer Berichtsdatenbank auf demselben Server wiederherstellt, sodass Benutzer, die Berichte ausführen, von denen getrennt werden, die CRUD-Operationen ausführen. Der Job wird alle 10 Minuten oder so ausgeführt. Die ersten Tests zeigen, dass der Start bis zum Ende etwa 30 Sekunden dauert. Speicherplatz ist kein Problem.
Ist das eine gute / schlechte Idee? Auf welche Fallgruben sollte ich achten? Gibt es einen besseren Weg, dies zu tun?
___ answer2312594 ___
Bevor Sie ein Stapler-Upgrade durchführen, sehen Sie möglicherweise, ob Sie
setzen
%Vor%
in Ihren Berichtsabfragen mildert das Problem. Es kann Ihnen zumindest etwas Zeit verschaffen, um herauszufinden, was optimal ist.
___ tag123sqlserver2005 ___ Verwenden Sie dieses Tag für Fragen, die für die Version 2005 von Microsoft SQL Server spezifisch sind.
___ tag123reporting ___ Ein Bericht ist eine zielgerichtete Präsentation von Daten, typischerweise zur Überprüfung durch den Menschen. Automatisierte Fehlerprotokollierung ist eine einfache Form der Berichterstellung. "Business Intel" schlägt eine anspruchsvolle und vielschichtige Form vor.
___ answer2312486 ___
Seien Sie vorsichtig mit häufigen Backups - das könnte zu vielen Ausfallzeiten führen!
Gemeinsame Lösungen
Es ist in der Tat üblich, eine separate Instanz nur für das Reporting zu erstellen.
Einige Leute gehen noch einen Schritt weiter und schreiben Berichte über eine separate physische Maschine oder einen Cluster, um diesen Teil der Last weiter zu isolieren.
Beide können mit Replikation behandelt werden (wodurch das Ausfallproblem vermieden wird). Oder Sie könnten einfach eine nächtliche Sicherung machen und dagegen berichten.
Ich möchte auch erwähnen, dass der High-End-Ansatz Data Warehousing ist, bei dem Sie diese neue Berichtsdatenbank im Wesentlichen in ein für Lesevorgänge optimiertes Repository umwandeln, für das effizienter Bericht erstellt werden kann. Dies ist in der Regel sehr zeitaufwändig zu implementieren, daher ist es nicht die schnelle Lösung, nach der Sie suchen.
Schlussgedanken
Eine letzte Sache: Ich habe einige Läden gesehen, die an der Schwelle dieses Problems stehen, um zu vermeiden, damit umzugehen. Hier ist der Takeaway: Berichte neigen dazu, zu bestimmten Zeiten des Monats oder Jahr zu stagnieren. Wenn Sie normalerweise kurz davor sind, Ihren Datenbankserver zu töten, könnte Sie die letzte Woche des Monats über den Kante!
Diese Frage ist sehr ähnlich: Ссылка
___