不知道你说的缓慢是怎么个缓慢的:
1、是因为要删除的文件很多,删除的时候缓慢?
2、是因为要检索哪些是过期的文件,从而导致缓慢?
如果是第一个原因,这个还真的没办法,真这样,建议你用数据库来存储文件最好。
如果是第二个原因,你可以在接收文件服务里把所接收的文件信息(路径、日期)存储到数据库,然后在第二个服务里从数据库检索过期文件再执行删除操作,同时删除数据库里的相应记录。
是第一个原因,为什么数据库存储文件就能解决?
@王者永乐: 通过SQL存储大量的小型文件,然后把删除的效率问题交给数据库来执行,性能相对要好点。因为那是基于块的数据操作,而在文件系统中是基于文件系统的,性能自然区别很大,你可以试试看。
此外,删除文件你可以分阶段的部分删除,不要一次性的集中删除海量文件,性能也会大大提高。
把31天前的文件夹重命名为最新日期,覆盖原文件。
想法很赞,但是我们每个文件夹中的文件个数不是固定的,文件和文件按照时间顺序有一定的逻辑性。
所以这种覆盖的方法除了无法覆盖完全外还会打乱这个逻辑。
@王者永乐: 当然,你最了解你的需求,而我只是泛泛的提供最佳的磁盘操作方式,因此你还是需要根据你的需求结合磁盘读写的特点来考虑解决方案。我这里还可以提供一种常用的方式,建立一个大的磁盘文件,将小文件按照一定的逻辑存储在这个大的磁盘文件上,这个大的磁盘文件可以根据业务Id或者日期来划分。
如果是我,就直接分32个分区,每天的图片放到一个分区,对不需要的分区进行快速格式化,这些分区循环使用,这样的速度应该很快,也不会因为长时间访问硬盘影响到其它服务
简单粗暴,总感觉32个分区的画面太美,不忍直视。
不过话说回来,因为文件每天的大小有较大差别。比如周六日就没有多少,而工作日是周六日三到四倍,如果分区的话,每个分区的最小容量我都得按照最大业务量去设计,这样算下来担心磁盘空间不足。
硬盘1T才多少钱?简单粗暴的就是最有效的方法了。你大不了多买10T硬盘就是了。