Baza danych z wieloma plikami .mdf

10

Szukałem online, ale nie znalazłem tego, czego szukam.

Problem / zapytanie dotyczy mojej wiedzy, że baza danych SQL Server powinna mieć jeden plik .mdf, a może niektóre pliki .ndf i jeden plik .log.

Widziałem wiele baz danych z jednym plikiem mdf i wieloma plikami ndf. Ale ostatnio natknąłem się na jakąś bazę danych na serwerze, gdzie każda baza miała wiele plików mdf.

Zrobiłem kopię zapasową pewnej bazy danych, przeniosłem je na inny serwer i przywróciłem plik podstawowy jako .mdf, a wszystkie inne pliki jako .ndf, oczywiście z wyjątkiem pliku dziennika, który został przywrócony jako .log.

Teraz moje pytania to:

  1. Czy istnieje mądrość w posiadaniu wielu plików .mdf dla bazy danych?
  2. Czy są jakieś wady posiadania wielu plików .mdf?

To było SQL Server 2008 R2 64bit Enterprise Edition

Wszelkie wskazówki lub wskazówki we właściwym kierunku są bardzo mile widziane. Dziękuję Ci.

M.Ali
źródło

Odpowiedzi:

14

Ale ostatnio natknąłem się na jakąś bazę danych na serwerze, gdzie każda baza miała wiele plików mdf.

Wynika to z niepoprawnej konwencji nazewnictwa. Microsoft twierdzi, że każda baza danych ma jeden podstawowy plik danych, ale to nie znaczy, że może mieć tylko jeden „plik danych mdf”, baza danych może mieć wiele plików danych z .mdfrozszerzeniem, ale tylko jeden będzie podstawowym plikiem danych. Lepiej nadać mdfrozszerzenie pierwotnemu plikowi danych i ndfdrugiemu plikowi danych, aby mieć odpowiednie rozgraniczenie, ale nie jest to twarda i szybka reguła, możesz także nadać rozszerzenie .abc pierwotnemu plikowi danych, więc to, co widziałeś jest normalne. W rzeczywistości możesz podać dowolne rozszerzenie.

Czy istnieje mądrość w posiadaniu wielu plików .mdf dla bazy danych?

Jeśli masz na myśli:

Czy istnieje mądrość w posiadaniu wielu podstawowych plików bazy danych?

Odpowiedź brzmi: nie, baza danych może mieć tylko jeden podstawowy plik danych.

Ale jeśli masz na myśli:

Czy jest jakaś mądrość w posiadaniu wielu plików danych (.mdf, .ndf lub o różnych nazwach) dla bazy danych?

To zależy, możesz i nie możesz mieć korzyści z wieloma plikami danych. Jeśli są one rozmieszczone na różnych dyskach fizycznych (mówię o wrzecionach), zauważysz pewną przewagę dzięki aplikacji intensywnie zapisującej. Jeśli wszystkie znajdują się na tych samych partycjach logicznych, nie będzie to miało żadnej przewagi, ponieważ u ich podstaw byłyby używane wspólne zasoby. Korzystanie z plików i aplikacjami poprawia wydajność bazy danych, ponieważ umożliwia tworzenie bazy danych na wielu dyskach, wielu kontrolerach dysków lub systemach RAID (redundantna tablica niezależnych dysków). Na przykład, jeśli komputer ma cztery dyski, możesz utworzyć bazę danych złożoną z trzech plików danych i jednego pliku dziennika, z jednym plikiem na każdym dysku. W miarę dostępu do danych cztery głowice odczytu / zapisu mogą jednocześnie uzyskiwać dostęp do danych.

Zgodnie z tym artykułem MSDN BOL

Grupy plików stosują proporcjonalną strategię wypełniania dla wszystkich plików w obrębie każdej grupy plików. Gdy dane są zapisywane w grupie plików, aparat bazy danych SQL Server zapisuje ilość proporcjonalną do wolnego miejsca w pliku do każdego pliku w grupie plików, zamiast zapisywać wszystkie dane w pierwszym pliku, aż do zapełnienia. Następnie zapisuje do następnego pliku. Na przykład, jeśli plik f1 ma 100 MB wolnego miejsca, a plik f2 ma 200 MB wolnego miejsca, jeden zakres jest przydzielany z pliku f1, dwa zakresy z pliku f2 i tak dalej. W ten sposób oba pliki zapełniają się mniej więcej w tym samym czasie i uzyskuje się proste rozkładanie.

Inną zaletą, którą znam, jest rozważenie bazy danych 1 TB, jeśli miałbyś dla niej pojedynczy plik danych i chcesz przywrócić tę bazę danych na innym serwerze, jest bardzo mało prawdopodobne, abyś miał 1 TB wolnej przestrzeni. Teraz, jeśli ta sama baza danych jest rozproszona na różnych plikach o rozmiarze 250 G, łatwiej jest je przywrócić. To może nie być tak naprawdę twój scenariusz, ale bardzo trudno jest znaleźć serwer z czterema dyskami 250 G niż jednym dyskiem 1 TB

Powiedziałbym, że zamiast wielu plików danych lepiej mieć różne grupy plików, ale znowu nie ma wielu środowisk. Bazy danych złożone z wielu aplikacjami można przywracać etapami w procesie znanym jako przywracanie fragmentaryczne. Przywracanie częściowe działa ze wszystkimi modelami odzyskiwania, ale jest bardziej elastyczne w przypadku modeli pełnych i masowych niż w trybie prostym. Pliki lub aplikacjami w bazie danych można wykonać kopię zapasową i przywrócić je indywidualnie. Pozwala to przywrócić tylko uszkodzone pliki bez konieczności przywracania reszty bazy danych. Pliki w kopii zapasowej grupy plików można przywracać pojedynczo lub jako grupę

Shanky
źródło
Jeśli DB ma więcej niż jeden plik danych pliku, tj. Ndf i podstawowy, tzn. Nadal domyślny. Z tym, jeśli jeden z plików DB służących do tworzenia tabel / indeksów na nim, czy generuje ponad wszelką wydajność? Mam na myśli, że domyślna grupa plików jest nadal podstawowa, ale utworzona tabela i indeksy znajdują się w plikach danych.
Cześć 10