首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dets会在使用ram_file选项查找磁盘时执行磁盘读取吗?

dets会在使用ram_file选项查找磁盘时执行磁盘读取吗?
EN

Stack Overflow用户
提问于 2019-12-12 12:19:19
回答 1查看 95关注 0票数 3

DETS Erlang文档中描述了一个选项ram_file

open_file(name, args)

{ram_file, boolean()} -表是否保存在内存中。将表保存在RAM中听起来像是异常,但可以提高打开表、插入一组对象、然后关闭表的应用程序的性能。当表关闭时,其内容将写入磁盘文件。默认为false

这将在插入或更新后在磁盘上执行保存。

如果我要用open -然后查找-然后关闭呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-13 13:29:48

我还没有签入这些文档,但我假设,这意味着VM将打开该文件,并可能会将其保存在内存中,并将其与磁盘上的文件同步,但认为更改仍然可以在缓存中结束,因此不能立即写入磁盘。如果要确保所有更改都已刷新到磁盘,请使用表上的dets:sync/1调用强制刷新数据,这在文档中是显式的:

--这也适用于已打开并将标志ram_file设置为true的表。在这种情况下,RAM文件的内容被刷新到磁盘。

每次查找后,它都不会打开或关闭文件,但它将一直打开,直到给定表上不调用dets:close/1为止。另一方面,每次查找的打开和关闭表可能会很昂贵,因此它会使整个DETS的使用变得有点毫无意义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59304443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档