erlang - 哪个对 RAM、查询列表理解或 mnesia index_read 更昂贵?

标签 erlang

我正在尝试从碎片化的 mnesia 表中读取,该表在不久的将来可能会保存大量记录。这些读取也可能通过表的主键以外的其他键进行。

这两个选项哪个更有效?查询列表理解,或 mnesia 索引读取?

最佳答案

那么,索引将需要更多的磁盘空间。对于每个表片段,mnesia 会创建一个单独的索引文件。但是,从经验来看,索引读取效率更高。

QLC 会在运行时消耗更多内存,尤其是当查询结果非常多时。这将要求您使用查询游标。我建议您使用索引读取。索引读取对 RAM 来说根本不昂贵,因为它是正常读取,尽管 mnesia 必须先查阅索引文件。当涉及到批量处理复杂的表关系和返回值的评估时,QLC 非常有用。但是,当结果太多时,它会引入处理成本和内存。请注意,QLC 使用 mnesia:select/1,2 和 4(具体哪个,我不确定),但我知道 select 是一种操作,它使 mnesia 在 serach 中遍历整个表以获取记录。

Mnesia 索引读取优于查询列表理解

关于erlang - 哪个对 RAM、查询列表理解或 mnesia index_read 更昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6730302/

相关文章:

erlang - Erlang 堆栈跟踪中包含多少条目?

scala - 名称值/表达式保存在函数程序中的什么位置?

php - Erlang 和 PHP 之间的加密

erlang - erlang 在列表中是否有隐藏的 rownum?

c - unicode 排序规则 NIF 运行速度比纯 Erlang 实现慢

erlang - 存储主 pipe PID

functional-programming - 在 Erlang 中编程时可以忽略线程安全吗?

docker - 将本地 Elixir/Erlang 连接到 Docker 容器内正在运行的应用程序

python - 我应该使用在 erlang 中使用 python 的两种方法中的哪一种?

erlang - 为什么使用 escript 生成的进程显示没有输出