首页 文章

ArangoDB集合锁

提问于
浏览
1

我正在考虑使用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 回答

  • 1

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

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

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

  • 0

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

    简而言之)

    MMFiles Storage Engine

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

    RocksDB Storage Engine

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

相关问题