Istnieje naprawdę dobry artykuł opracowany przez Microsoft Research zatytułowany Blobować czy nie Blobować .
Ich wniosek po wielu testach wydajnościowych i analizach jest następujący:
-
jeśli twoje zdjęcia lub dokument mają zwykle rozmiar poniżej 256K, przechowywanie ich w kolumnie VARBINARY bazy danych jest bardziej wydajne
-
jeśli twoje zdjęcia lub dokumenty mają zwykle rozmiar ponad 1 MB, przechowywanie ich w systemie plików jest bardziej wydajne (a dzięki atrybutowi FILESTREAM SQL Server 2008 nadal są one pod kontrolą transakcyjną i stanowią część bazy danych)
-
pomiędzy tymi dwoma, jest to trochę rozrzucone w zależności od zastosowania
Jeśli zdecydujesz się umieścić swoje zdjęcia w tabeli SQL Server, zdecydowanie zalecam użycie osobnej tabeli do przechowywania tych zdjęć - nie przechowuj zdjęcia pracownika w tabeli pracownika - trzymaj je w osobnej tabeli. W ten sposób tabela Pracownik może pozostać szczupła, wredna i bardzo wydajna, zakładając, że nie zawsze musisz wybierać również zdjęcie pracownika jako część zapytań.
W przypadku grup plików zapoznaj się z plikami i architekturą grup plików na wprowadzenie. Zasadniczo możesz utworzyć bazę danych z oddzielną grupą plików dla dużych struktur danych od samego początku lub dodać dodatkową grupę plików później. Nazwijmy to „LARGE_DATA”.
Teraz, gdy masz nową tabelę do utworzenia, która musi przechowywać kolumny VARCHAR(MAX) lub VARBINARY(MAX), możesz określić tę grupę plików dla dużych danych:
CREATE TABLE dbo.YourTable
(....... define the fields here ......)
ON Data -- the basic "Data" filegroup for the regular data
TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data
Zapoznaj się z intro MSDN na grupach plików i baw się nim!