Из изображения в двоичный(max)

Работаю с SQL 2005

У меня есть таблица с 5 колонками

ID - int 
Param - smallint 
Data1 - image 
Data2 - image
Data3 - image

Размер изображения может быть как 20 байт, так и 1МБ (да, больше 8к). Размер изображения не постоянен, так как в нем хранятся сжатые данные. Чаще всего размер BLOB составляет от 512Б до 1,5кБ. Между Data1, Data2 и Data3 существует логическая связь, поэтому они хранятся вместе. В базе данных, хранящей данные за 3 года, имеется 66 миллионов записей.

В попытке улучшить хранение данных и подготовить систему к будущим версиям SQL. Я хочу изменить столбцы изображений на тип данных varbinary(MAX). FILESTREAM был бы другой возможностью, но я не уверен, что он будет более эффективным для хранения ~200 миллионов файлов.

После замены изображений на varbinary(max) я заметил, что общий размер таблицы уменьшился (совсем немного), но каждый раз, когда я добавляю/удаляю данные, процесс занимает гораздо больше времени.

Насколько я понимаю, если значение varbinary(max) меньше 8k, то оно помещается внутрь таблицы, а если больше 8k, то помещается куда-то еще, и указатель на эти данные хранится в таблице. При использовании изображения указатель сохраняется, даже если данные изображения меньше 8k.

В общем, ежедневно добавляется и удаляется 20000 записей, поэтому данных добавляется/удаляется не так много, и один селект обычно выполняется для 10-200 последовательных записей.

Есть ли способ установить varbinary(max) данные для хранения всегда (независимо от размера) вне таблицы, так же как хранится изображение?

7
задан MrBoJangles 22 January 2013 в 23:24
поделиться