ArangoDB 集合锁
ArangoDB collection lock
我正在考虑将 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插入数据时是否使用集合锁?
如果您将 ArangoDB 与 MMFiles 存储引擎一起使用,写入块读取和锁定在集合级别。因此,在执行查询并将边写入 peopleAndMovieRelation
.
时无法访问边集合
然而,对于 RocksDB 存储引擎,文档级锁允许并发写入。写入不会阻塞读取。读取不会阻止写入。
https://docs.arangodb.com/3.2/Manual/Architecture/StorageEngines.html
此处对存储引擎进行补充说明。 Comparing RocksDB and MMFiles Storage Engine
简称)
MMFiles 存储引擎
- 基于最新版本 (3.2)
的 ArangoDB 默认存储引擎
- Collection级锁
- 所有索引在启动时加载主内存(如果索引太多但访问速度最快,则启动时间长)
RocksDB 存储引擎
- 支持 3.2+
- 在主内存中缓存数据,但如果需要则从磁盘加载
- 所有索引都写在磁盘上
- 最快的启动(启动时无负载索引),逐渐提高性能
我正在考虑将 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插入数据时是否使用集合锁?
如果您将 ArangoDB 与 MMFiles 存储引擎一起使用,写入块读取和锁定在集合级别。因此,在执行查询并将边写入 peopleAndMovieRelation
.
然而,对于 RocksDB 存储引擎,文档级锁允许并发写入。写入不会阻塞读取。读取不会阻止写入。
https://docs.arangodb.com/3.2/Manual/Architecture/StorageEngines.html
此处对存储引擎进行补充说明。 Comparing RocksDB and MMFiles Storage Engine
简称)
MMFiles 存储引擎
- 基于最新版本 (3.2)
的 ArangoDB 默认存储引擎
- Collection级锁
- 所有索引在启动时加载主内存(如果索引太多但访问速度最快,则启动时间长)
RocksDB 存储引擎
- 支持 3.2+
- 在主内存中缓存数据,但如果需要则从磁盘加载
- 所有索引都写在磁盘上
- 最快的启动(启动时无负载索引),逐渐提高性能