过去,磁盘压缩是以牺牲效率为代价来增加存储空间的,但当时我们都在单处理器系统上。
现在有额外的核心可以与处理数据并行地进行解压缩工作。
对于I / O绑定应用程序(特别是读取大量顺序数据处理),可以通过仅将读取和写入压缩数据写入磁盘来提高吞吐量。
有没有人有经验支持或拒绝这个猜想?
答案 0 :(得分:5)
注意不要混淆磁盘寻道时间和磁盘读取速率。在硬盘驱动器(HDD)上寻找正确的轨道需要数百万个CPU周期(5-10毫秒或5-10百万纳秒)。一旦你在那里,你可以每秒读取数十兆字节的数据,假设碎片很少。对于固态硬盘(SSD),寻道时间比硬盘低(35,000-100,000ns)。
无论数据是否在磁盘上压缩,您仍然需要寻找。问题变成是(压缩数据的磁盘读取时间+解压缩时间)< (未压缩数据的磁盘读取时间)。解压缩相对较快,因为它等于用较长的令牌替换短令牌。最后,它可能归结为数据的压缩程度以及数据的大小。如果您正在读取2KB压缩文件而不是5KB原始文件,则可能不值得。如果您正在阅读2MB压缩文件而不是25MB原始文件,则可能是。
以合理的工作量进行衡量。
答案 1 :(得分:4)
是的!实际上,处理器现在非常快,甚至对内存都有意义。 (IBM相信,IBM这样做。)我相信,目前一些大型铁机甚至会对CPU缓存进行压缩。
答案 2 :(得分:2)
是的,这很有道理。在基于NT的Windows操作系统上,人们普遍认为,有时启用NTFS压缩比禁用它更快。这种情况多年来一直如此,多核应该只会使它变得更加真实。
答案 3 :(得分:1)
我认为这还取决于你的压缩对你的IO的影响程度。
例如,DB2的行压缩功能针对IO绑定应用程序:数据仓库,报告系统等。它使用基于字典的算法,并不是非常积极的 - 导致50-80%的数据压缩(表,存储中的索引以及内存中的索引)。但是 - 它也会使查询速度提高10%左右。
他们本可以采取更积极的压缩方式,但之后会受到性能影响。