C#SQL Server精简版:非常高的压缩率

时间:2016-04-04 08:40:21

标签: c# compression sql-server-ce

我开发了一个.NET WPF应用程序,其数据存储由SQL Server Compact Edition处理。我注意到,当我压缩获得的SQL Server CE文件时,我经常将其压缩到原始文件大小的5%。

这里存在明显的无知风险,这是预期的行为吗?看起来考虑到这种大规模的节省,我应该在每次保存时压缩文件(我还没有考虑过它的性能影响)。数据库大小可以从几个MB一直到最大4GB,尽管这种情况很少见。我的数据存储效率是否低效,或者为什么在压缩时我会获得如此显着的节省?有什么东西我可以做到总是获得节省空间,而不必外部压缩SQL Server CE文件?

1 个答案:

答案 0 :(得分:3)

不应压缩数据库,因为它会极大地影响检索性能。我会举个例子。

如果字段长度为200个字节,则数据库保留200个字节,以便在特定行上保存值。它可以计算总行数,增加所有字段的长度。

压缩算法可能会将其中的实际值压缩到几乎为零。但是,如果数据库会这样做,它就不能依赖于计算磁盘上的位置(行号*行大小+列偏移量)。它首先必须解压缩所有内容才能获取特定行上特定列的值。从表现的角度来看,你不希望这样。