您的位置:首页 > 数据库

MS SQL SERVER2005 XML 最佳实践4

2007-03-30 20:22 218 查看
如果满足下列条件,请在单独的表中创建 xml 数据类型列:

您希望对 xml 数据类型列生成 XML 索引,但主表的主键与其聚集键不同,或主表没有主键,或主表是一个堆(即没有聚集键)。如果主表已存在,可能会这样。

您不希望因为表中存在 XML 列而降低表扫描的速度。无论该列是存储在行内还是行外,都会占用空间。

XML 数据的粒度
XML 列中存储的 XML 数据的粒度对锁定至关重要,在一定程度上,对更新也很重要。SQL Server 对 XML 数据和非 XML 数据都使用相同的锁定机制。因此,行级锁定会导致锁定行中的所有 XML 实例。当粒度较大时,锁定大型 XML 实例以便进行更新会导致多用户情况下的吞吐量下降。另一方面,过度分解会丢失对象封装,并增加重新汇集开销。

对于良好的设计而言,重要的是保持数据建模要求与锁定和更新特征之间的平衡。但在 SQL Server 2005 中,实际存储的 XML 实例的大小并不十分重要。

例如,通过使用对部分二进制大型对象 (BLOB) 和部分索引更新(将存储的现有 XML 实例与其更新后的版本进行比较)的新支持,对 XML 实例进行更新。部分二进制大型对象 (BLOB) 更新在两个 XML 实例之间执行差异比较,并只更新差异之处。部分索引更新只修改那些必须在 XML 索引中更改的行。

非类型化、类型化和约束的 xml 数据类型
SQL Server 2005 xml 数据类型实现了 ISO SQL-2003 标准 xml 数据类型。因此,它可以在非类型化的 XML 列中存储格式正确的 XML 1.0 版的文档、具有文本节点和任意数量顶级元素的所谓的 XML 内容片段。系统将检查数据格式是否正确,但不要求将列绑定到 XML 架构,并且拒绝在扩展意义上格式不正确的数据。对于非类型化的 XML 变量和参数也是如此。

如果您有说明 XML 数据的 XML 架构,则可以将架构与 XML 列相关联以产生类型化的 XML。XML 架构用于验证数据,在编译查询和数据修改语句过程中执行比非类型化的 XML 更精确的类型检查,以及优化存储和查询处理。 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息