Datenbank mit mehreren MDF-Dateien

10

Ich habe online gesucht, aber nicht gefunden, wonach ich suche.

Das Problem / die Abfrage ist meines Wissens, dass eine Datenbank in SQL Server eine .mdf-Datei und möglicherweise einige .ndf-Dateien und eine .log-Datei haben sollte.

Ich habe viele Datenbanken mit einer MDF- und mehreren NDF-Dateien gesehen. Aber kürzlich bin ich auf eine Datenbank auf einem Server gestoßen, auf der jede Datenbank mehrere MDF-Dateien hatte.

Ich habe eine Sicherungskopie einiger Datenbanken erstellt und sie auf einen anderen Server verschoben und die Primärdatei als .mdf und alle anderen Dateien als .ndf wiederhergestellt, mit Ausnahme der Protokolldatei, die als .log wiederhergestellt wurde.

Jetzt sind meine Fragen:

  1. Gibt es eine Weisheit, mehrere MDF-Dateien für eine Datenbank zu haben?
  2. Gibt es irgendwelche Nachteile, wenn mehrere .mdf-Dateien vorhanden sind?

Es war SQL Server 2008 R2 64bit Enterprise Edition

Jeder Rat oder Hinweis in die richtige Richtung wird sehr geschätzt. Vielen Dank.

M.Ali
quelle

Antworten:

14

Aber kürzlich bin ich auf eine Datenbank auf einem Server gestoßen, auf der jede Datenbank mehrere MDF-Dateien hatte.

Das liegt an einer falschen Namenskonvention. Microsoft sagt, dass jede Datenbank eine primäre Datendatei hat, aber dies bedeutet nicht, dass sie nur eine "MDF-Datendatei" haben kann. Die Datenbank kann viele Datendateien mit der .mdfErweiterung haben, aber nur eine wird eine primäre Datendatei sein. Es ist besser, die mdfprimäre Datendatei und ndfdie sekundäre Datendatei zu erweitern, um eine ordnungsgemäße Abgrenzung zu gewährleisten. Dies ist jedoch keine feste Regel. Sie können der primären Datendatei auch die Erweiterung .abc geben, damit das, was Sie gesehen haben, normal ist. In der Tat können Sie jede Erweiterung geben, die Sie mögen.

Gibt es eine Weisheit, mehrere MDF-Dateien für eine Datenbank zu haben?

Wenn du meinst:

Gibt es eine Weisheit, mehrere Primärdateien für eine Datenbank zu haben?

Die Antwort lautet Nein, eine Datenbank kann nur eine Primärdatendatei haben.

Aber wenn du meinst:

Gibt es eine Weisheit mehr in mit Daten - Dateien (.mdf, NDF, oder anders genannt) für eine Datenbank?

Es kommt darauf an, dass Sie mit mehreren Datendateien Vorteile erzielen können und nicht. Wenn sie auf verschiedene physische Laufwerke verteilt sind (ich spreche von Spindeln), würden Sie einen Vorteil bei schreibintensiver Anwendung sehen. Wenn sie sich alle auf denselben logischen Partitionen befinden, hat dies keinen Vorteil, da sie zugrunde liegende Ressourcen verwenden würden. Die Verwendung von Dateien und Dateigruppen verbessert die Datenbankleistung, da eine Datenbank auf mehreren Festplatten, mehreren Festplattencontrollern oder RAID-Systemen (redundantes Array unabhängiger Festplatten) erstellt werden kann. Wenn Ihr Computer beispielsweise über vier Festplatten verfügt, können Sie eine Datenbank erstellen, die aus drei Datendateien und einer Protokolldatei mit einer Datei auf jeder Festplatte besteht. Beim Zugriff auf Daten können vier Lese- / Schreibköpfe gleichzeitig parallel auf die Daten zugreifen.

Gemäß diesem MSDN BOL-Artikel

Dateigruppen verwenden eine proportionale Füllstrategie für alle Dateien in jeder Dateigruppe. Während Daten in die Dateigruppe geschrieben werden, schreibt das SQL Server-Datenbankmodul einen Betrag proportional zum freien Speicherplatz in der Datei in jede Datei innerhalb der Dateigruppe, anstatt alle Daten bis zur Vollständigkeit in die erste Datei zu schreiben. Es schreibt dann in die nächste Datei. Wenn beispielsweise die Datei f1 100 MB frei und die Datei f2 200 MB frei hat, wird ein Bereich aus der Datei f1, zwei Bereiche aus der Datei f2 usw. zugewiesen. Auf diese Weise werden beide Dateien ungefähr zur gleichen Zeit voll, und es wird ein einfaches Striping erreicht.

Ein weiterer Vorteil, den ich kenne, ist die Berücksichtigung einer 1-TB-Datenbank, wenn Sie eine einzelne Datendatei dafür haben und diese Datenbank auf einem anderen Server wiederherstellen möchten. Es ist höchst unwahrscheinlich, dass Sie 1 TB freien Speicherplatz haben. Wenn nun dieselbe Datenbank auf verschiedene Dateien mit einer Größe von jeweils 250 G verteilt ist, wird die Wiederherstellung einfacher. Dies ist möglicherweise nicht Ihr Szenario, aber es hilft sehr, einen Server mit vier 250-G-Laufwerken als einem 1-TB-Laufwerk zu finden

Ich würde sagen, anstelle vieler Datendateien ist es besser, unterschiedliche Dateigruppen zu haben, aber auch hier gibt es nicht viele Umgebungen. Datenbanken, die aus mehreren Dateigruppen bestehen, können schrittweise durch einen Prozess wiederhergestellt werden, der als stückweise Wiederherstellung bezeichnet wird. Die stückweise Wiederherstellung funktioniert mit allen Wiederherstellungsmodellen, ist jedoch für die vollständigen und massenprotokollierten Modelle flexibler als für den einfachen Modus. Dateien oder Dateigruppen in einer Datenbank können einzeln gesichert und wiederhergestellt werden. Auf diese Weise können Sie nur die beschädigten Dateien wiederherstellen, ohne den Rest der Datenbank wiederherstellen zu müssen. Dateien in einer Dateigruppensicherung können einzeln oder als Gruppe wiederhergestellt werden

Shanky
quelle
Wenn DB mehr als eine Datei hat, sind Datendateien, dh ndf und primäre, immer noch Standard. Wenn eine der DB-Dateien, die zum Erstellen von Tabellen / Indizes verwendet werden, eine Leistung über Kopf erzeugt? Ich meine, die Standarddateigruppe ist immer noch primär, aber erstellte Tabellen und Indizes befinden sich in Datendateien.
Hi10