dets在64位系统还是有可耻的2G限制

本文探讨了dets在64位操作系统下对于大于2G文件的支持问题,包括其内部设计上的两个主要限制因素:keysegment的问题及偏移表示方式,并分析了这些问题对mnesia的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原本以为在 64位操作系统下 文件的读写指针都改成64位的 避免了2G的限制。经过测试 disk_log和file都支持超过2G的数据文件,但是 dets还是可耻的失败了。 经过查看源码 有2个问题:

1. key segment的问题。 dets在设计的时候 是针对32位的 那么它的空间限制就是2G, 所以在计算最大的段的数的最大的偏移时候 干脆在代码里面写死了2G。


2. 偏移的问题。 每个key对应的value在dets_v9文件格式中的偏移值是用 <<Off:32>> 这样的格式来表示的。 所以如果改变成64位 那么文件格式就完全不兼容了。


结论: dets支持2G以上没戏了, 而且同样影响到mnesia.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值