WEB开发网
开发学院数据库MSSQL Server Microsoft SQL Server 2005 的 XML 最佳实施策略 阅读

Microsoft SQL Server 2005 的 XML 最佳实施策略

 2007-05-17 09:38:17 来源:WEB开发网   
核心提示: 要存储在关系列中的值取决于您的工作负荷,例如,Microsoft SQL Server 2005 的 XML 最佳实施策略(7),如果您基于路径表达式 /Customer/@CustId 检索全部 XML 值,则通过将 CustId 属性的值提升到关系列中以及将其编入索引,锁定大型 XML

要存储在关系列中的值取决于您的工作负荷。例如,如果您基于路径表达式 /Customer/@CustId 检索全部 XML 值,则通过将 CustId 属性的值提升到关系列中以及将其编入索引,可能产生更高的查询性能。另一方面,如果您的 XML 数据被广泛且非冗余地分解到关系列中,则重新组合的成本可能很大。

对于高度结构化的 XML 数据(例如,表的内容已经转换到 XML),可以将所有值映射到关系列(可能使用 XML 视图技术)。

使用 XML 数据类型进行数据建模

本节讨论有关原生 XML 存储的数据建模主题。这些主题包括将 XML 数据编入索引、属性提升和类型化 XML 数据类型。

相同或不同的表

XML 数据类型列可以在包含其他关系列的表中创建,也可以在与主表之间具有外键关系的独立表中创建。

在满足下列某个条件时,请在同一个表中创建 XML 数据类型列:

• 您的应用程序在 XML 列上执行数据检索,并且不需要 XML 列上的 XML 索引。 或者

• 您需要在 XML 数据类型列上生成 XML 索引,并且主表的主键与其聚集键相同。有关详细信息,请参阅将 XML 数据类型列编入索引一节。

在满足下列条件时,请在单独的表中创建 XML 数据类型列:

• 您需要在 XML 数据类型列上生成 XML 索引,但主表的主键与其聚集键不同,或者主表不具有主键,或者主表是一个堆(也就是说,没有聚集键)。如果主表已经存在,则这可能是真的。

• 您不希望表扫描由于表中存在 XML 列(无论它是存储在行中还是存储在行外,都会占用空间)而降低速度。

XML 数据的粒度

XML 列中存储的 XML 数据的粒度对于锁定和更新特性而言至关重要。SQL Server 对 XML 和非 XML 数据采用了相同的锁定机制。因此,行级锁定会导致相应行中的所有 XML 实例被锁定。当粒度比较大时,锁定大型 XML 实例以便进行更新会导致多用户场合下的吞吐量下降。另一方面,严重的分解会丢失对象封装并提高重新组合成本。

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:Microsoft SQL Server

编辑录入:coldstar [复制链接] [打 印]
赞助商链接