C# SQL 服务器精简版:非常高的压缩率

C# SQL Server Compact Edition: Very High Compression Ratio

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

冒着在这里表现出明显无知的风险,这是预期的行为吗?似乎考虑到这种巨大的大小节省,我应该在每次保存时压缩文件(我还没有考虑这对性能的影响)。数据库大小可以从几 MB 到最大 4GB 不等,尽管这种情况很少见。我的数据是否存储效率低下,或者为什么我在压缩时节省了如此多的钱?有什么我可以做的来始终获得此 space 节省,而不必从外部压缩 SQL 服务器 CE 文件?

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

如果字段的长度为 200 字节,数据库将保留 200 字节以保存特定行的值。它可以计算添加所有字段长度的总行大小。

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