Pytanie to składa się z dwóch części: kiedy dodać nową FILEGROUP i kiedy dodać nowy PLIK w grupie plików. Najpierw porozmawiajmy o teorii:
Mark ma rację, że głównym powodem jest wydajność.
Drugim powodem jest odzyskiwanie po awarii. W SQL Server 2005 i nowszych wersjach można przywracać aplikacjami. Gdy dochodzi do katastrofy, możesz najpierw przywrócić tylko podstawową grupę plików i częściowo przełączyć bazę danych w tryb zapytań. Użytkownicy mogą uruchamiać zapytania podczas przywracania innych aplikacjami. Jest to przydatne w przypadku baz danych z dużą ilością danych historycznych, które mogą nie być od razu wymagane, lub hurtowni danych, które muszą ładować dane do bieżących tabel bez potrzeby dostępu do danych historycznych.
Innym powodem jest profil odczytu / zapisu grup danych. Jeśli masz jakieś dane, które są stale zapisywane, i inne dane, które są intensywnie czytane, możesz zbudować różne typy pamięci, aby sprostać tym potrzebom. Możesz umieścić ciężkie zapisy na raid 10, a pozostawić tendencyjne do odczytu rzeczy na tańszym raidu 5.
Teraz porozmawiajmy o plikach a aplikacjach. Podczas umieszczania obiektów w SQL Server, musisz umieścić je na poziomie grupy plików. Możesz wyładować tabelę lub indeks w grupie plików, ale nie możesz wybrać konkretnego pliku. Więc wszystko, co do tej pory omawialiśmy, dotyczyło tego, kiedy dodać grupę plików - ale kiedy dodajesz plik?
Jeśli projektujesz pamięć masową i masz 80 dysków twardych, możesz ją rozdzielić na kilka sposobów:
- Jedna pula 80 dysków
- Dwie pule po 40 dysków
- Cztery pule po 20 dysków itp.
Różne podsystemy pamięci mają różne profile wydajności. Pracowałem z niektórymi sieciami SAN, które działały najlepiej z macierzami dysków 12-16 i nic większego nie poprawiło wydajności. Innym przykładem są sieci SAN z obsługą wielu ścieżek: jeśli masz kilka kart HBA łączących serwer z pamięcią, a jeśli twoje oprogramowanie do obsługi wielu ścieżek nie jest tak naprawdę aktywne / aktywne, możesz potrzebować jednej tablicy na ścieżkę, aby rozdzielić obciążenie. Cztery ścieżki, cztery pule dysków uzyskają lepszą wydajność na tego typu dyskach.
W takich przypadkach powstają cztery różne tablice, cztery różne dyski w systemie Windows (chyba że używasz punktów montowania, a nawet wtedy są to różne foldery) i będziesz potrzebować czterech oddzielnych plików w SQL Server. Te oddzielne pliki mogą znajdować się w tej samej grupie plików.
Głównym powodem jest wydajność. Gdy zabraknie pojemności IOPS na podstawowym dysku grupa plików, musisz rozwinąć się do drugiej grupy plików, aby podzielić IOPS na wiele dysków / jednostek LUN, w zależności od konfiguracji magazynu.
EDYCJA: Brad Wilson dobrze skomentował dyski SSD. Jeśli używasz złożonego systemu pamięci masowej SSD / SATA / FC, możesz chcieć mieć różne aplikacje na różnych typach pamięci. Następnie możesz umieścić swoje ekstremalne tabele wymagań IOPS w filegropusie SSD, podczas gdy tabele historii / statystyk mogą być przechowywane w tanich aplikacjach SATA.
źródło
Chciałbym również zwrócić uwagę, że w przypadku tego pytania istnieje również aspekt odzyskiwania / dostępności danych. Używając wielu grup plików i nie umieszczając żadnych obiektów zdefiniowanych przez użytkownika w podstawowej grupie plików, masz większą elastyczność w włączaniu przywracania online. pozwala to na częściowe przywracanie na poziomie grupy plików.
Przywracanie online jest dostępne w wersjach Enterprise i Developer Server SQL Server później niż w 2005 roku
Inną myślą, która przychodzi na myśl, jest oddzielenie statycznych danych odniesienia tylko do odczytu od danych transakcyjnych. W przypadku większych baz danych może to skrócić czas i / lub miejsce potrzebne do wykonania kopii zapasowej.
źródło