Работаю с 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) данные для хранения всегда (независимо от размера) вне таблицы, так же как хранится изображение?