我开发了一个.NET WPF应用程序,其数据存储由SQL Server Compact Edition处理.我注意到,当我压缩获得的SQL Server CE文件时,我经常将其压缩到原始文件大小的5%.
冒这种显着无知的风险,这是预期的行为吗?看起来考虑到这种大规模的节省,我应该在每次保存时压缩文件(我还没有考虑过它的性能影响).数据库大小可以从几个MB一直到最大4GB,尽管这种情况很少见.我的数据存储效率是否低效,或者为什么在压缩时我会获得如此显着的节省?有什么东西我可以做到总是获得这个节省空间,而不必外部压缩SQL Server CE文件?
解决方法:
不应压缩数据库,因为它会极大地影响检索性能.我会举个例子.
如果字段长度为200个字节,则数据库保留200个字节,以便在特定行上保存值.它可以计算总行大小,添加所有字段的长度.
压缩算法可能会将其中的实际值压缩到几乎为零.但是,如果数据库会这样做,则不能依赖于计算磁盘上的位置(行号*行大小列偏移量).它首先必须解压缩所有内容才能获取特定行上特定列的值.从表现的角度来看,你不希望这样.