2016-06-13 9 views
1

Ich habe eine sehr große DB mit 50 Millionen Datensätzen. I Ich habe einige sehr teure Abfragen, die ich für eingehende Statistikzwecke ausführen möchte. Diese Abfragen verlangsamen den Server/die Datenbank. Also möchte ich sie nicht mehr als einmal laufen lassen - ich möchte sie an einem Sonntagabend laufen lassen und die Ergebnisse für die Woche speichern.Kann ich teure SQL-Abfragen für eine Woche zwischenspeichern/speichern?

Ich möchte nicht die Daten auf alle relevanten Felder indizieren, da es eine lange Zeit dauern würde, und würde viel neu gemacht werden müssen, da ich die DB alle paar Wochen wegblasen.

Gibt es Software/Tools/Praktiken, die die Ergebnisse von teuren Abfragen für eine unbestimmte Zeit speichern. Meine Currnet Methode zu denken ist, die Abfragen einmal zu tun und schreiben Sie die Ergebnisse in eine neue Tabelle in der Datenbank namens "stats". Ich benutze Python.

+0

Vielleicht fügen Sie die konkrete Datenbank, die Sie in Ihrer Verarbeitung zusammen mit Python kombinieren, hinzu, so dass bestimmte Lösungen leichter angeboten werden können? Auch der Python-Code, den Sie bereits haben, könnte hilfreich sein. Wäre diese Datenbank oder Tabelle im selben DB "Produkt" oder würden Sie auch darüber nachdenken, sqlite dem Mix hinzuzufügen (eine dritte Komponente für das Caching). Was ist mit Memcached, das in meiner Erfahrung in mehr web-zentrierten Schichten-Apps häufig verwendet wird, die einige Abfragen wünschen, die die DB nicht zu oft treffen. Haben Sie bereits sichergestellt, dass Ihre teuren SQL-Abfragen optimiert sind, da dies das Problem reduzieren könnte? – Dilettant

+0

Ja, die Abfragen sind optimiert. Sqlite klingt gut - könnte eine Option sein. – Mark

Antwort

0

Ich benutze die job agent, die mit SQL Server Management Studio für ähnliche Zwecke kommt. Wenn Ihre Datenbank nicht SQL Server ist, können Sie sie im Managementstudio als linked server hinzufügen und die Abfrage über den Befehl openquery ausführen. Sie können detaillierte Zeitpläne, E-Mail-/SMS-Benachrichtigungen usw. für Ihren Job festlegen.

Zur Ausgabe auf dem Datenträger speichern Sie einen Befehl wie this in Ihrem Job Schritt verwenden:

EXEC master.xp_cmdshell ‚SQLCMD -S server \ SQLSERVERDEV2005 -E -Q„10 * FROM pubs.dbo TOP SELECT .authors "-b -oc: \ myoutput.txt", no_output

Verwandte Themen