每 2000 条左右消息将旧消息从收件箱移动到旧消息文件夹有什么好处吗?
这是否取决于所使用的 MDA,即 qmail 与 postfix,或者无论如何这都是好的做法?
如果无论如何这都是好的做法,那么为什么似乎很少有共享主机提供商这样做,为什么谷歌、雅虎等公司不这样做呢?
答案1
这样做的主要好处是可以减少邮件程序或客户端访问程序枚举邮箱所需的时间。根据假脱机卷的格式化文件系统,处理“大量小文件”问题的方式会有所不同。有些方法很好,有些则不好。
当然,邮件程序使用什么格式是影响邮件程序的一个重要因素。如果邮件程序使用 MBOX 格式但没有外部索引,则必须读取整个文件才能构建客户端所需的标头数据,并且仍然比 2000 多个文件更快,因为它只需执行一次打开/读取/关闭循环,而不是 2000 多个文件。如果邮件程序索引标头数据,则假脱机卷的格式几乎不重要,因为标头数据将单独存储。
此外,并非所有邮件程序都一样,即使在 Unix 领域也是如此。大型邮件程序使用数据库支持的邮件存储,而不是文件支持的存储,或者使用混合系统,其中索引数据位于数据库中,而实际消息(或者只是消息正文)位于某个文件系统中。这些类型的系统往往以近对数方式扩展(当系统从零到满时,性能会迅速下降,然后随着增长而性能下降接近线性,直到内存限制使数据库访问混乱交换),因此大量的消息并不总是意味着性能非常糟糕。这里的一个关键概念是客户端视图文件夹是合乎逻辑的。
您之所以看不到这么多,是因为大多数邮件程序要么使用 DB 后端,要么使用 MBox,因为很多文件系统都存在小文件问题。