ArangoDB集合锁

bqjvbblv  于 2023-09-28  发布在  Go
关注(0)|答案(2)|浏览(111)

我正在考虑用arangoDB进行图搜索。
我有两个收藏,一个是人,另一个是电影,我做了一个人和电影之间的图表。
当我插入如下查询时

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

查询上述查询时,无法访问peopleAndMovieRelation边集合。查询完成后,我可以访问它。
ArangoDB在插入数据时使用集合锁吗?

8i9zcol2

8i9zcol21#

如果你使用ArangoDB和MMFiles存储引擎,写块读和锁定是在集合级别。因此,在执行查询和将边写入peopleAndMovieRelation时,无法访问边集合。
然而,使用RocksDB存储引擎,文档级锁允许并发写入。写操作不会阻塞读操作。读取不会阻止写入。
https://docs.arangodb.com/3.11/deploy/architecture/storage-engine/

edqdpe6u

edqdpe6u2#

下面是对存储引擎的补充说明。Comparing RocksDB and MMFiles Storage Engine
缩短)

MMFiles存储引擎

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

RocksDB存储引擎

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

相关问题