От изображения к Varbinary (максимум) - PullRequest
7 голосов
/ 14 апреля 2011

Работа с SQL 2005

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

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

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

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

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

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

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

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

1 Ответ

4 голосов
/ 14 апреля 2011

Вы можете использовать sp_tableoption, чтобы установить "типы большого значения вне строки"

Некоторая дополнительная информация

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...