DETS Erlang文档中描述了一个选项ram_file。
open_file(name, args)
{ram_file, boolean()} -表是否保存在内存中。将表保存在RAM中听起来像是异常,但可以提高打开表、插入一组对象、然后关闭表的应用程序的性能。当表关闭时,其内容将写入磁盘文件。默认为false。
这将在插入或更新后在磁盘上执行保存。
如果我要用open -然后查找-然后关闭呢?
发布于 2019-12-13 13:29:48
我还没有签入这些文档,但我假设,这意味着VM将打开该文件,并可能会将其保存在内存中,并将其与磁盘上的文件同步,但认为更改仍然可以在缓存中结束,因此不能立即写入磁盘。如果要确保所有更改都已刷新到磁盘,请使用表上的dets:sync/1调用强制刷新数据,这在文档中是显式的:
--这也适用于已打开并将标志
ram_file设置为true的表。在这种情况下,RAM文件的内容被刷新到磁盘。
每次查找后,它都不会打开或关闭文件,但它将一直打开,直到给定表上不调用dets:close/1为止。另一方面,每次查找的打开和关闭表可能会很昂贵,因此它会使整个DETS的使用变得有点毫无意义。
https://stackoverflow.com/questions/59304443
复制相似问题