Есть действительно хорошая статья от Microsoft Research под названием Для блобов или не для блобов , в которой подробно обсуждается эта тема.
Их вывод после большого количества тестов производительности и анализа таков:
если ваши изображения или документ обычно имеют размер менее 256 КБ, хранение их в базе данных VARBINARY
более эффективно
если ваши изображения или документ обычно имеют размер более 1 МБ, хранение их в файловой системе более эффективно (а с атрибутом FILESTREAM
SQL Server 2008 они все еще находятся под контролем транзакций и являются частью базы данных )
между этими двумя, это немного путаница в зависимости от вашего использования
Если вы решите поместить свои изображения в таблицу SQL Server, я настоятельно рекомендую использовать отдельную таблицу для хранения этих изображений - не храните фотографии сотрудников в таблице сотрудников - храните их в отдельной таблице. Таким образом, таблица «Сотрудник» может оставаться скудной, средней и очень эффективной, при условии, что вам не всегда нужно также выбирать фотографии сотрудника в качестве части ваших запросов.
Для файловых групп ознакомьтесь с Файлы и Архитектура файловых групп для вступления. По сути, вы либо создадите базу данных с отдельной файловой группой для больших структур данных с самого начала, либо добавите дополнительную файловую группу позже. Давайте назовем это «LARGE_DATA».
Теперь, когда у вас есть новая таблица для создания, в которой нужно хранить столбцы VARCHAR(MAX)
или VARBINARY(MAX)
, вы можете указать эту группу файлов для больших данных:
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
Проверьте вступление MSDN в файловых группах и поэкспериментируйте с ним!