开发者社区> 问答> 正文

如果文件被拆分成固定大小的数据块,那这些数据块是怎么保证顺序的,以及数据库块的大小是固定的吗?

如果文件被拆分成固定大小的数据块,那这些数据块是怎么保证顺序的,以及数据库块的大小是固定的吗会不会出现大量的内存碎片,读取的时候是不是要占用大量内存进行合并数据库?

展开
收起
OSC开源社区 2024-05-11 17:36:20 44 0
1 条回答
写回答
取消 提交回答
  • 比如想读 1GB 的文件,在存储中是 sequantial read。如果全部读出来返回给请求端,更占内存,调用端的等待时间更长。都是 4K/64K/256K/1M 等容量去顺序读,以一个 streaming 的方式持续返回给调用端。所以 JuiceFS 把文件分成 block 存储不会影响性能。相反,还能提升性能。因为更容易通过并发方式同时读很多的 block 返回给调用端,当然获得高吞吐的同时,需要用一点内存资源来换文件被分成很多 data block 存在对象存储中,每个 block key 会存在 meta engine 里(直接存太占空间了,设计上 16 个 block 为一个 chunk,存储 chunkid + offset)。block size 默认设为 4MiB 是最大值,实际会有小于该值的 block。碎片合并有的。读取的时候不用担心,各种存储系统在读的时候也都是按某个大小的 page/block 去读

    2024-05-11 19:42:04
    赞同 3 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
DTCC 2022大会集锦《云原生一站式数据库技术与实践》 立即下载
阿里云瑶池数据库精要2022版 立即下载
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载