.net - SQL Server 中的列级压缩

标签 .net sql-server sql-server-2008 sql-server-2008-r2 data-compression

我有一个列,我想在(XML 数据)中存储大量文本数据。每行大约 8,000 个字符,每分钟大约 100-500 行。

这么多数据意味着我将不得不相当积极地清除该列。 (由于我必须在我们公司的 SAN 上托管我的 SQL Server,因此存储空间非常昂贵。)但是如果我能找到一种方法来压缩这些数据,我就可以将它保留更长时间。

我在 using CLR Integration to compress BLOBs 上看到过类似这篇文章的内容在 SQL 2005 中。

我也见过工具SQLCompress.NET对于 SQL Server 2005。

两者似乎都说他们完全按照我的意愿行事。 在存储时压缩单个列的数据。

但是,该工具已被放弃(自 2008 年以来没有更新)并且我对 CLR 集成知之甚少,除非我听说它会导致问题。 此外,这两个解决方案都适用于 SQL Server 2005。

所以,这是我的问题。我正在使用 SQL Server 2008 R2。这些 SQL Server 2005 解决方案中的任何一个都适合我吗?

或者是否有另一种解决方案可以用来压缩我的数据?

注意:行压缩和页面压缩对我需要的东西没有帮助(至少就我所见)。行压缩将固定长度的数据存储在可变长度的字段中,页面压缩减少了冗余数据的实例。这些都不会帮助处理大块的文本。

注二:我看到这个 question ,但它的答案使用行和页压缩或 FILESTREAMs。我不想使用 FILESTREAM,因为我失去了镜像数据库的能力。

最佳答案

我认为最好的选择是在将数据放入 SQL Server 之前使用客户端库来压缩和解压缩数据,如果您想通过 XML 的特定元素或属性进行查询,您可以提取这些并存储它们在单独的列或规范化的行中(无论如何您都想这样做 - 查询大型 XML 文本列,特别是对于嵌套元素,速度很慢)。

关于.net - SQL Server 中的列级压缩,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9038140/

相关文章:

.net - 在 Razor 网页的 View 中调用方法

c# - VisualStyles 颜色不一致

c# - 哪个更快,带锁的函数调用还是虚拟调用?

sql-server - 如何阻止数据库部署删除服务器触发器?

sql-server - 通过SQL Server 2008查询时"č"转换为"c"

sql - 如何在 SQL Server 中的 where 子句中比较 varbinary

c# - 是否可以将应用程序配置中的更改序列化到应用程序的 app.config 文件中?

c++ - QT - 空 QLineEdits 在写入 SQL 数据库时未作为 NULL 传递

.net - 如何用纯 SQL 编写 LINQ 的 .Skip(1000).Take(100) ?

sql-server-2008 - 如何为参数列表中的变量设置默认值