文件系统知识点

1 堆文件

类似数据库的堆表,内存管理中的堆,记录是无序存储的,要访问一个记录需要知道其地址(位移),mds的masterBin就是这种文件,自己维护metadata(pointer table)


2散列文件

记录按照key散列到块, hash(key) % n,n是总块数。然后存入相应块里,如果块满了,就插入到溢出桶(拉链法)

缺点,只能根据key来取一条记录(bookmark查询)不能range 查询


3 有序文件

1)连续存储的有序文件

2)带索引的文件 (基本文件 + 索引)

稠密索引:每条记录都有一个索引项

稀疏索引:对记录的key空间分块,一个块一个索引项,块内线性或二分查找

多级稀疏索引:即便只是每个块一个索引项,索引项可能依旧很多,会占很多磁盘块,比如占100块,如何定位到索引项在哪个块? 可以在磁盘空间上做二分查找,比如先读取第50块,在块中则命中,大于块中的所有关键字,则确定下次范围是[51, 100],依次类推。需要log 100 = 7次磁盘访问。 

还可以对这100块索引再做索引,那么就只有100个索引项,可以放到一个块里,这样只需要度先读这一块(或者假设已经在内存里),然后直接找到对应的索引块,直接读这个索引块,然后再查找

3)B+树的叶子节点就是记录的稠密索引,非叶子节点就是叶子节点的多级稀疏索引;B树是直接把数据本身按key有序的存储,基本文件本身有序,没有额外索引,也是有序文件的一种:非连续存储的有序文件。


4 有洞的文件

文件是可以有洞的,比当前文件大小是1000, seek到2000写文件,就产生了一个洞,洞是metadata维护的,不占用磁盘空间



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值