【问题标题】:Should I Replace Multiple Float Columns with a BLOB?我应该用 BLOB 替换多个浮点列吗?
【发布时间】:2012-10-07 22:37:48
【问题描述】:
SQL Server 中的单个 BLOB 列(在性能方面)与大约 20 个 REAL 列(20 x 32 位浮点数)相比如何?
我记得 Martin Fowler 建议使用 BLOB 来持久化大型对象图(在企业应用程序架构模式中)以删除查询中的多个连接,但是对于具有 20 个固定列(它们是从未在查询中使用过)?
此表更新频率很高,大约每秒 100 次,INSERT 语句在查询中指定的所有列中变得相当大。
我认为第一个答案是“自己分析”,但我想知道是否有人已经有这方面的经验。
【问题讨论】:
标签:
sql-server
performance
blob
insert-into
poeaa
【解决方案1】:
我不能完全谈论SELECT 的性能,您需要对其进行测试,但我非常怀疑它会在那里导致任何性能问题,因为您不会读取比以前更多的数据。但是,关于INSERT,您应该会看到性能提升(我不确定大小),因为可能没有任何统计索引要更新。当然,这取决于很多的设置,但我只是把我的意见扔在那里。这个问题非常主观,没有足够的信息可以真正告诉您是否会看到围绕更改的性能问题。
现在,在实践中,我要说的是,除非您遇到真正的性能问题,否则不要这样做。此外,如果您发现真正的性能问题,请在选择此类解决方案之前对其进行分析,可能还有其他方法可以解决这些问题。
【解决方案2】:
如果您没有发现这对于满足您的性能要求至关重要,通常您不应该这样做。
如果您将其存储在一个 blob 中,如果您对对象结构进行任何更改(例如添加或删除一列),则需要重新计算整个数据库。如果您保留多个列,那么您未来的数据库重构和部署会容易得多。