ArangoDB集合锁

时间:2017-09-06 09:33:00

标签: arangodb

我正在考虑使用arangoDB进行图搜索。

我有两个集合,一个是人,另一个是电影,我在人和电影之间制作了一个图表。

当我插入如下的查询时

FOR p IN people
  FOR m In movie
    FILTER p.movieName == m.title
    INSERT {_from:p._id, _to:m._id} IN peopleAndMovieRelation

当我查询上面的查询时,我无法访问peopleAndMovieRelation edge Collection。查询完成后,我可以访问它。

插入数据时,ArangoDB是否使用收集锁定?

2 个答案:

答案 0 :(得分:1)

如果将ArangoDB与MMFiles存储引擎一起使用,则写入块读取和锁定处于收集级别。因此,在执行查询并将边缘写入peopleAndMovieRelation时,无法访问边集合。

然而,使用RocksDB存储引擎,文档级锁定允许并发写入。写入不会阻止读取。读取不会阻止写入。

https://docs.arangodb.com/3.2/Manual/Architecture/StorageEngines.html

答案 1 :(得分:0)

这是存储引擎的附加说明。 Comparing RocksDB and MMFiles Storage Engine

简而言之)

MMFiles存储引擎
- 基于最新版本(3.2)的ArangoDB默认存储引擎
- 收集级锁定
- 所有索引在启动时加载主内存(如果索引太多但访问速度最快,则启动时间较长)

RocksDB存储引擎
- 支持3.2+
- 在主内存中缓存数据,但如果需要则从磁盘加载
- 所有索引都写在磁盘上 - 最快的启动(启动时无负载索引),逐步提高性能