Wenn Sie einen relevanten Sicherungsplan haben, wird Ihre Protokolldatei nicht unbegrenzt wachsen. Sie werden wahrscheinlich feststellen, dass der darin enthaltene Speicherplatz hauptsächlich nicht zugewiesen ist. Wenn Seitenblöcke im Protokoll gesichert werden (abhängig von Ihrem Sicherungs- / Wiederherstellungsmodell lesen Sie diese Optionen natürlich nach, wenn Sie mit ihnen nicht vertraut sind), werden sie als markiert kostenlos, um später wieder verwendet zu werden, aber nicht für das Betriebssystem freigegeben. Wenn Ihr großer Prozess das nächste Mal ausgeführt wird, viele Einfügungen / Aktualisierungen verursacht und daher einige GB Protokollspeicher benötigt, muss MSSQL nicht mehr Speicherplatz vom Betriebssystem anfordern, da es nur die Blöcke verwenden kann, die der Protokolldatei bereits zugewiesen sind Derzeit gibt es nichts, was nicht überschrieben werden kann.
Wenn Ihre Protokolldateien jedes Mal, wenn dieser wöchentliche Prozess ausgeführt wird, ein zusätzliches Wachstum von GByte aufweisen , müssen Sie Ihren Sicherungsplan überprüfen, da SQLServer die Protokollseiten auch nicht als wiederverwendbar ansieht, da Ihr Sicherungsregime für die Daten nicht korrekt ist und Aktivität (oder es könnte so einfach sein, dass Sie nicht oft genug Backups erstellen).
Das Wachstum in den Datendateien ist ähnlich: Wenn die Dateien einen großen Teil des freien Speicherplatzes enthalten, wird dieser beim nächsten Mal verwendet, wenn zusätzlicher Speicherplatz benötigt wird, anstatt das Betriebssystem zu bitten, mehr Speicherplatz zuzuweisen. Wenn Ihre Daten unerwartet groß sind, sollten Sie auf eine Überindizierung achten. Möglicherweise finden Sie in großen Tabellen Indizes, die nie wirklich verwendet werden (entweder werden sie überhaupt nicht benötigt oder bieten keinen großen Vorteil gegenüber einem anderen Index, der ebenfalls verwendet wird) vorhanden). Klassische Beispiele hierfür sind das Auffinden jeder Spalte in einer breiten Tabelle mit einem eigenen Index (was normalerweise, wenn auch nicht immer, ein Zeichen für ein schlechtes Tabellen- / Indexdesign ist ) oder das Auffinden eines Index für " Spalte1 und Spalte2 " und eines für Spalte1für sich allein: Der Abfrageplaner und der Runner können den zusammengesetzten Index genauso gut verwenden wie den einfachen für Abfragen, die auf Spalte 1 basieren, sodass für den zusätzlichen Index kein Platz benötigt wird. Das Verwalten von nicht nützlichen Indizes wirkt sich auch auf die Schreibleistung aus. Dieses Buch enthält einige Abschnitte, in denen häufig auftretende Indexprobleme behandelt werden, wenn Sie sich das Problem genauer ansehen möchten. Es ist für alle Entwickler und Datenbankadministratoren ohnehin eine Lektüre wert, IMO.
Das unnötige Verkleinern von Dateien kann zu einer übermäßigen Fragmentierung der Dateien führen, was die Leistung beeinträchtigen kann. Seien Sie also vorsichtig, wenn Sie diesen Weg gehen.
Zum Wechsel von RAID1 zu RAID5: Das würde ich nicht empfehlen. RAID5 hat häufig Leistungsprobleme bei der Arbeit mit schreibintensiven Datenbanken (es wird wahrscheinlich die großen Prozesse, die Daten und Transaktionsprotokolleinträge im Wert von GByte generieren, erheblich verlangsamen), da vor dem Schreiben zusätzliche Lesevorgänge durchgeführt werden. Prüfsummenausgabe. Anstatt ein Laufwerk von R1 auf R5 hinzuzufügen, würde ich zwei zusätzliche Laufwerke verwenden und R10 verwenden - immer noch doppelt so viel Speicherplatz, aber ohne das Problem mit der Schreibleistung (vorausgesetzt, auf dem Server ist natürlich Platz für zwei zusätzliche Laufwerke) !). Was auch immer Sie in diesem Bereich tun, die Konvertierung von einer RAID-Anordnung in eine andere ist wahrscheinlich mit einer großen Ausfallzeit verbunden, wenn Sie die Daten sichern und das Array neu erstellen. und kopieren Sie die Daten wieder auf (es sei denn, Sie kaufen einen ganz neuen Satz Laufwerke und können gleichzeitig neue und alte Arrays ausführen, wodurch die Ausfallzeiten erheblich reduziert werden). Eine andere Möglichkeit wäre, zwei Laufwerke als neues RAID1-Array hinzuzufügen und dann die dynamischen Volumes von Windows zu verwenden, um diese beiden Arrays zu überspannen (was die Größe von RAID10 ergibt, jedoch ohne einen Teil des Leistungsgewinns, der durch Striping erzielt werden kann). ODER Sie können die beiden Arrays getrennt halten und die Datendateien auf einem und die Transaktionsprotokolle auf dem anderen halten. Wenn Sie die Daten und Protokolle auf getrennten Spindeln auf diese Weise aufbewahren, können Sie die Leistung von Schreibvorgängen erheblich verbessern, indem Sie die für die Aktualisierung erforderlichen Kopfbewegungen reduzieren sowohl das Protokoll als auch die Datendatei. Diese letzte Option hat auch eine minimale Ausfallzeit, da, sobald das Laufwerk im Rest ist, "live" ausgeführt werden kann: