我之前曾问过this有关如何使用Datomic提高性能的问题,但我还没有找到一个好的解决方案。令我印象深刻的是,当使用Datomic Console执行查询时,我得到的结论是查询速度要快得多。但是,与使用独立启动应用程序时相比,我还注意到使用Datomic Console时启动时间和内存消耗大幅增加。这对我来说意味着在浏览内容之前,Datomic Console会将所有数据拉入内存。
答案 0 :(得分:2)
如同Datomic Documentation中的here所述,Peer Library在获取查询时会在(进程内)对象缓存中加载索引段。
- 我是对的,情况确实如此吗?
醇>
我怀疑Datomic Console是否明确选择将所有数据都存入内存,但Datomic控制台可能会急切地遍历大量数据以显示其信息中心。
- 如果是这样,我可以通过编程方式从同伴那里做点什么吗?
醇>
嗯,我想你总是可以人为地扫描所有片段。一种简单的方法是通过Datoms API。
- 如果(2)那么如何在Clojure中完成?
醇>
(defn scan-whole-db [db]
(doseq [index [:eavt :aevt :avet :vaet]]
(dorun (seq (d/datoms db index)))))
尽管如此,我不确定你应该期待这一策略的性能提升。你的对象缓存最好足够大!