阅读 144

场景设计 - 大文件小内存排序

1. 场景描述

16G内存,32核CPU,2T的硬盘,实现500G文件的排序处理,你怎么设计

2. 考察要点

  1. 内存不足
  2. 并行执行、压榨CPU
  3. 空间复杂度支持O(n)-可归并
  4. 要求时间复杂度尽量低

3. 解决方法

步骤

  1. 500个文件分成 50份 每个10G内部归并排序
  2. 采用归并的思想,每次读取两个文件的头数字(已经有序)进行排序,合并成一个大文件。
  3. 多线程去执行归并操作

4. 性能提升

1). 2步骤每次可以批量取出多个,减少IO,但是额外占用的空间就会多,需要和多线程资源进行权衡。
2). 批量写,同批量读一样,需要额外占用空间

作者:夹胡碰

原文链接:https://www.jianshu.com/p/9078438ce508

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐