Die aktuelle DB oder unser Projekt hat diesen Monat über 40 GB überschritten und wächst durchschnittlich um 3 GB pro Monat. Jetzt sind alle Tabellen am besten normalisiert und die richtige Indexierung wurde verwendet. Aber immer noch, während die Größe wächst, braucht es mehr Zeit, um auch grundlegende Abfragen wie "Anzahl wählen (1) aus Tabelle" abzufeuern. So können Sie einige Punkte teilen, die in dieser Front helfen werden. Datenbank ist Sql Server 2005. Wenn wir Partitionierung implementieren würde es nicht einen Overhead verursachen?
Vielen Dank im Voraus.
Eine 40-GB-Datenbank wird heutzutage nicht als große Datenbank angesehen. Und ein Wachstum von 3 GB pro Monat ist auch nichts Ungewöhnliches.
In den Bereichen müssen Sie jedoch wirklich auf einige kleine Dinge achten, mit denen Sie in kleineren Datenbanken zurechtkommen könnten. Da Sie über das Ausgeben einer Abfrage "SELECT COUNT (1) ..." schreiben, möchten Sie vielleicht über die Notwendigkeit solcher Abfragen nachdenken. Klingt so, als wäre dies eine Art "Anzahl der Zeilen in der Tabelle anzeigen". Brauchen Sie wirklich diese Art von "Basisabfragen", auf die Sie verzichten können? Unter besonderer Berücksichtigung dieser Frage: Brauchen Sie das Ergebnis, um genau zu sein, oder könnte es auch ein "guter Schätzwert" sein? Wenn dies der Fall ist, sollten Sie hier und da einen WITH-Hinweis (NOLOCK) einfügen, wo Genauigkeit nicht zwingend erforderlich ist. Verwenden Sie NOLOCK jedoch mit Bedacht, da falsche Daten mit unglaublicher Geschwindigkeit ausgegeben werden. : -)
Viele gute Vorschläge wurden von AdaTheDev erwähnt, lassen Sie mich nur einen Punkt hinzufügen:
Nichts bietet Ihnen eine bessere Leistung als ein solides und solides Schema. Und wer weiß, was zu dem Zeitpunkt, an dem Sie das Schema entworfen haben, als angemessen angesehen wurde, muss möglicherweise nach einiger Zeit in der Produktion überarbeitet werden. Dies gilt insbesondere für Indizes.
Sie sollten hier einen Blick darauf werfen: Verbesserung der SQL Server-Leistung
Ihr Gerät ist ziemlich niedrig, aber da Sie nicht einmal erwähnt haben, welche Festplatte Sie verwenden, ist das wahrscheinlich das Problem. Sie benötigen eine sehr schnelle Festplatte, um eine 40-GB-Datenbank mit 4 GB RAM zu unterstützen, mehrere Striped-Laufwerke wären ein absolutes Minimum.
Ich würde mit Performance Monitor und SQL Server Profiler , um herauszufinden, welche die kritischsten Leistungsgrenzen auf Ihrem System sind. Danach hast du wahrscheinlich eine gute Idee, wo du anfangen sollst.
Hier ist ein Platz zum Starten: Fehlerbehebung bei Leistungsproblemen in SQL Server 2005
Ich denke in einigen Punkten müssen Sie partitionieren. Es ist ein grundlegender Ansatz, um die Datenbank zu skalieren.
Vielleicht möchten Sie auch zu den Grundlagen gehen und über den Grund, warum die Datenbank wächst, und über ihre Struktur nachdenken. 3GB pro Monat extra (und wahrscheinlich erhöht, wenn Sie erfolgreich sind) wird Sie früher oder später in Schwierigkeiten bringen; -)
Tags und Links sql-server performance sql-server-2005