Из изображения в Varbinary (максимум)

#sql #sql-server #sql-server-2005

#sql #sql-сервер #sql-server-2005

Вопрос:

Работа с SQL 2005

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

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

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

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

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

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

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

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

Ответ №1:

Вы можете использовать sp_tableoption для установки «типов больших значений вне строки»

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