Должен ли я заменить несколько столбцов с плавающей точкой на BLOB?

Как сравнить один столбец BLOB в SQL Server (с точки зрения производительности) с ~20 REAL-столбцами (20 x 32-разрядных операций с плавающей запятой)?

Я помню, как Мартин Фаулер рекомендовал использовать большие двоичные объекты для сохранения больших графов объектов (в шаблонах архитектуры корпоративных приложений) для удаления нескольких объединений в запросах, но имеет ли смысл делать что-то подобное для таблицы с 20 фиксированными столбцами (которые никогда не используются в запросы)?

Эта таблица обновляется очень часто, около 100 раз в секунду, и INSERT операторы становятся довольно большими со всеми столбцами, указанными в запросе.

Я предполагаю, что первым ответом будет "профилируй сам", но я хотел бы знать, если у кого-то уже есть опыт с этим материалом.

2 ответа

Решение

Я не могу полностью говорить о производительности SELECTвам нужно будет это проверить, но я очень сомневаюсь, что это вызовет какие-либо проблемы с производительностью, потому что вы не будете читать больше данных, чем раньше. Тем не менее, в отношении INSERTвы должны увидеть прирост производительности (какого размера я не уверен), потому что скорее всего не будет никаких статистических индексов для обновления. Конечно, это зависит от множества настроек, но я просто высказываю свое мнение. Этот вопрос довольно субъективен, и недостаточно доступной информации, чтобы действительно сказать вам, если вы увидите проблемы с производительностью, связанные с изменением.

Теперь на практике я скажу: оставьте это, если вы не видите реальных проблем с производительностью. Кроме того, если вы видите реальные проблемы с производительностью, проанализируйте их, прежде чем выбирать этот тип решения, возможно, есть другие способы их устранения.

Как правило, вы не должны, если вы не обнаружили, что это важно для удовлетворения ваших требований к производительности.

Если вы храните его в одном BLOB-объекте, вам необходимо пересчитать всю базу данных, если вы вносите какие-либо изменения в структуру объекта (например, добавление или удаление столбца). Если вы сохраните несколько столбцов, ваши будущие рефакторинги и развертывания базы данных будут намного проще.

Другие вопросы по тегам