Istnieje naprawdę dobra publikacja Microsoft Research zatytułowana To Blob or Not To Blob.
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 256 KB, 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, oszczędna i bardzo wydajna, zakładając, że nie zawsze musisz wybierać również zdjęcie pracownika jako część zapytań.
W przypadku grup plików wyewidencjonuj pliki i architekturę grup plików na wprowadzenie. Zasadniczo albo utworzysz bazę danych z osobną grupą plików dla dużych struktur danych od samego początku, albo później dodasz dodatkową grupę plików. 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
Sprawdź intro MSDN na grupach plików i baw się nim!