哪个更昂贵的RAM,查询列表理解,还是mnesia index_read?

时间:2011-07-18 08:24:53

标签: erlang

我试图从一个碎片化的mnesia表中读取,该表可能在不久的将来拥有大量的记录。这些读取也可以是除表的主键之外的其他键。

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

1 个答案:

答案 0 :(得分:5)

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

QLC将在运行时消耗更多内存,尤其是当查询结果如此之多时。这将要求您使用Query Cursors。我建议你使用Index read。索引读取对RAM来说并不昂贵,因为通过mnesia进行正常读取必须先查询索引文件。在批处理中执行复杂的表关系和返回值的评估时,QLC很好。但是,当结果太多时,它会引入处理成本和内存。请注意,QLC使用mnesia:select / 1,2和4(具体的一个,我不确定),但我知道select是一个让mnesia在serach中遍历整个表以获取记录的操作。

Mnesia Index read优于Query List理解