Istnieje bardzo dobra publikacja firmy Microsoft Research pod tytułem To Blob or Not To Blob, która omawia dokładnie ten temat.
Ich wniosek po dużej liczbie testów wydajnościowych oraz analiza jest taka:
jeśli zdjęcia lub dokumentu są zwykle poniżej 256K wielkości, przechowywanie ich w bazie danych VARBINARY
kolumna jest bardziej wydajny
jeśli twoje zdjęcia lub dokument mają zwykle rozmiar powyżej 1 MB, przechowywanie ich w systemie plików jest bardziej wydajne (i z atrybutem SQL Server 2008 o wartości FILESTREAM
, nadal podlegają one kontroli transakcji i stanowią część bazy danych)
pomiędzy tymi dwoma, to trochę wrzucić-up w zależności od zastosowania
Jeśli zdecydujesz się umieścić swoje zdjęcia do tabeli SQL Server, gorąco polecam korzystania osobną tabelę dla przechowywanie tych zdjęć - nie przechowuj zdjęcia pracownika w tabeli pracownika - trzymaj je w osobnym stoliku. W ten sposób tabela Employee może pozostać szczupła, średnia i bardzo wydajna, zakładając, że nie zawsze trzeba również wybierać zdjęcia pracownika jako część swoich zapytań.
Dla grup plików, sprawdź Files and Filegroup Architecture dla intro. Zasadniczo można utworzyć bazę danych z oddzielną grupa 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 tworzenia, który musi przechowywać VARCHAR(MAX)
lub VARBINARY(MAX)
kolumn, można 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ź wstęp MSDN na grupach plików, a baw się z nim!
Prawdą jest, że we wszystkich zapytaniach musimy wybrać miniaturę LUB zdjęcie (miniaturę do wyszukiwania wyników i zdjęcie przy wejściu, aby wyświetlić dane obrazu). W takim przypadku musimy również rozdzielić dwa rzędy? –