当前位置:  开发笔记 > Android > 正文

Microsoft SQL Server 2005/2008:XML与text/varchar数据类型

如何解决《MicrosoftSQLServer2005/2008:XML与text/varchar数据类型》经验,为你挑选了2个好方法。

是否更有意义(服务器端验证XML/schema/dtd除外)以XML类型而不是text/varchar/ntext存储XML?我不打算在数据库端进行任何XML操作.

我调查的目的是减少数据库大小.为此,我可以将XML数据类型用于非类型化XML吗?优缺点都有什么?

我发现了一篇与该主题相关的文章,但我不确定作者的假设/结论是否正确.



1> Saulius Vala..:

如果将xml存储在xml类型的列中,则数据将不会作为简单文本存储,因为在nvarchar情况下,它将存储在某种解析数据树中,而后者将比未解析的xml版本小.这不仅减少了数据库的大小,而且还为您提供了其他优点,例如验证,易于操作等等(即使您没有使用其中任何一个,仍然可以将它们用于将来使用).

另一方面,服务器必须在插入时解析数据,这可能会减慢数据库速度 - 您必须决定速度与大小.

编辑:

就个人而言,我认为数据库中的数据只有在具有难以在关系模型中实现的结构时才应存储为xml,例如布局,样式描述等.通常这意味着没有太多数据和速度是不是问题,因此增加了xml功能,如数据验证和操作能力(也是,最后但并非最不重要的,能够点击管理工作室中的值并看到格式化的xml - 我真的很喜欢这个功能!),超重成本.

我没有在数据库中存储大量xml的直接经验,如果我有选项,我不会这样做,因为它几乎总是比关系模型慢,但如果是这样,我' d建议分析两种选项,并在最适合您需求的尺寸和速度之间进行选择.



2> FoxyBOA..:

我的快速调查显示MS SQL 2005(Express Edition)

Microsoft SQL Server 2005 - 9.00.3073.00(Intel X86)2008年8月5日12:31:12版权所有(c)1988-2005 Microsoft Corporation Express Edition on Windows NT 6.0(Build 6000:)

以大约70%的开销存储XML(可以更快地处理/解析).

转换前的我的数据:rows = 160320,reserved = 178576 KB,data = 178184 KB,index_size = 272 KB,unused = 120 KB

转换后的数据:rows = 160320,reserved = 309702 KB,data = 307216 KB,index_size = 1672 KB,unused = 184 KB

因此,如果您没有计划在数据库端使用XML技术,那么将XML数据存储在XML数据类型中没有任何意义.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有