Kiedy w SQL Server należy podzielić PODSTAWOWĄ grupę plików danych na dodatkowe pliki danych?

11

Nasza baza danych ma obecnie tylko jedną FileGroup, PRIMARY, która zawiera około 8 GB danych (wiersze tabeli, indeksy, katalog pełnotekstowy).

Kiedy jest dobry moment na podzielenie tego na wtórne pliki danych? Jakie są kryteria, o których powinienem wiedzieć?

Jarrod Dixon
źródło

Odpowiedzi:

20

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.

Brent Ozar
źródło
1
Tak ... natychmiastowa analiza korzyści. Jedyne, co chciałbym dodać, to to, że często możesz również odciążyć indeksy z tabel o dużym dostępie do własnych wrzecion / grup plików, aby zwiększyć wydajność asynchronizacji / odczytu z wyprzedzeniem. Zrobiłem to w kilku przypadkach z kilkoma większymi wdrożeniami i pomogłem firmom zaoszczędzić dziesiątki tysięcy $$ na kosztach sprzętu, które, jak twierdzili ich dostawcy SAN, będą musieli uzyskać pożądaną przepustowość.
Michael K Campbell
6

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.

Mark S. Rasmussen
źródło
2
Dyski SSD mają szansę dokonać OGROMNEJ zmiany w naszym sposobie myślenia o dzieleniu danych, biorąc pod uwagę, o ile trudniej jest je nasycić z powodu ich bardzo niskiego opóźnienia.
Brad Wilson
Rzeczywiście, dobra uwaga!
Mark S. Rasmussen
1

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.

Jason Horner
źródło