我有一个这样创建的索引:
CREATE INDEX ON :ResultSet(file_id)
有了这个索引,我就可以从多个文件(例如file1,file2,file3)中填充数据。每个文件都将在neo4j中创建ResultSet节点。并行地,我正在运行检索查询
MATCH (n:ResultSet) where n.file_id='file1' RETURN COUNT(N)
基本上,当正在后台更新其他文件的索引时,我正在对一个文件1运行检索查询。 Neo4j在这种情况下是否仍使用索引?我如何确认和衡量?对Neo4j索引进行并行检索和更新会对性能产生任何影响。
答案 0 :(得分:0)
这是在所有数据库中的安全操作。索引只是附加的内部表,这些表也已排序。更新索引时,数据库将在其上写入写锁。使用索引时,它将在其上放置读取锁定。显然,尝试同时快速执行这两项操作会导致性能下降,但这是您为闪电般的快速读取查询付出的代价之一。如果性能写入成本超过了读取收益,则意味着该数据可能不应该被索引。
TLDR;
索引更新具有与任何其他数据事务相同的数据读/写保护。他们还用写入速度与读取速度进行交换。