【发布时间】:2013-08-06 21:39:35
【问题描述】:
我计划使用 SQL Server 为我的应用程序存储 XML BLOB。我正在为一个设计决策而苦苦挣扎,并正在寻找任何有此主题经验的人的指导或建议。
需要存储为 XML 的数据有大约 100 个简单数据点。它们可以很容易地分为每组可能有 20 个数据点。在未来版本的应用程序中,我们计划通过添加新数据点来扩大数据范围,其中一些数据点将是分层的(列表、字典等)。
我们预计不需要对 XML 数据执行查询。最多它们将是非常简单的查询,如果需要,我们可以将任何数据点提升到关系列。
我不确定是否应该只创建一个巨大的 XML BLOB 来保存所有这些数据,或者是否应该将其分解为多个 XML 列。在 SQL Server 2008 R2 中处理 XML 数据类型是否有任何最佳实践或指南可以帮助我做出最佳决策?这还重要吗?
编辑:我已经准备好使用 XML 作为数据类型,我正在尝试决定是应该使用一个大 BLOB 还是将其分解为多个 XML 列。
【问题讨论】:
-
Mikael,我已经读过了。但是,我仍然不确定是将我的 xml 分解为多列还是只拥有一个巨大的 blob。我知道有 2GB 的大小限制,但是我不担心达到这个限制。我相信有一个关于 XML 粒度的部分触及了我的问题,但老实说,我已经阅读了很多遍,但我仍然不知道该走哪条路。
-
如果在逻辑上为 XML 设置一列是有意义的,那么您应该这样做。关于粒度的链接中提到的内容与将 XML 拆分对更新时锁定数据的较小部分的行的影响有关。使用更多列对锁定没有任何影响。该链接还提到了在更新部分 XML 时的优化,无论是在您使用 XML 索引时,还是在不使用 XML 索引时,在列上拆分应该不会更快更新。
-
针对较小块的查询会更快,但如果您以后需要对多个列进行查询(使用或),我的猜测是较小块的好处会丢失。您可以为查询性能做的最好的事情是使用 SQL Server 2012 SP1 中引入的选择性 XML 索引。
标签: sql-server xml