你是对的
我亲自写程序验证了, 10亿条数据仅需把offset存储到内存, 查询2万条平均耗时300ms以下.
机器: m1 16GB
数据量: 10亿条
数据大小: 100GB
程序内存使用量: 10GB
以下是我测试多次的耗时:
>>> get 20000
get offsets elapses: 89ms
get data elapses: 175ms
write results elapses: 5ms
>>> get 20000
get offsets elapses: 140ms
get data elapses: 195ms
write results elapses: 6ms
>>> get 20000
get offsets elapses: 124ms
get data elapses: 262ms
write results elapses: 6ms
>>> get 20000
get offsets elapses: 120ms
get data elapses: 177ms
write results elapses: 5ms
【 在 chunhui 的大作中提到: 】
: 如果不用现成的kv数据库自己弄,其实不用把字符串加载到内存,只把key加载到内存即可。key指向数据文件的便宜位置。
: 这样内存不需要很多,查找速度飞快,找到key之后根据偏移位置再读字符串。
--
修改:abettor FROM 36.110.18.*
FROM 36.110.18.*