时间:2021-07-01 10:21:17 帮助过:29人阅读
2,约束
在图形数据库中,能够创建四种类型的约束:
例如,使用Cypher创建约束:
CREATE CONSTRAINT ON (book:Book) ASSERT book.isbn IS UNIQUE; CREATE CONSTRAINT ON (book:Book) ASSERT exists(book.isbn); CREATE CONSTRAINT ON ()-[like:LIKED]-() ASSERT exists(like.day); CREATE CONSTRAINT ON (n:Person) ASSERT (n.firstname, n.surname) IS NODE KEY;
3,统计信息
当使用Cypher查询图形数据库时,Cypher脚本被编译成一个执行计划,执行该执行计划获得查询结果。为了生成一个性能优化的执行计划,Neo4j需要收集统计信息以对查询进行优化。当统计信息变化到一定的赋值时,Neo4j需要重新生成执行计划,以保证Cypher查询是性能优化的,Neo4j存储的统计信息包括:
默认情况下,Neo4j自动更新统计信息,但是,统计信息的更新不是实时的,更新统计信息可能是一个非常耗时的操作,因此,Neo4j在后台运行,并且只有当变化的数据达到一定的阈值时,才会更新统计信息。
Neo4j keeps the statistics up to date in two different ways. For label counts for example, the number is updated whenever you set or remove a label from a node. For indexes, Neo4j needs to scan the full index to produce the selectivity number. Since this is potentially a very time-consuming operation, these numbers are collected in the background when enough data on the index has been changed.
Neo4j把执行计划被缓存起来,在统计信息变化之前,执行计划不会被重新生成。通过配置选项,Neo4j能够控制执行计划的重新生成:
参考文档:
Graph database concepts
Chapter 3. Cypher
Neo4j 第二篇:图形数据库
标签:不必要 收集统计信息 label 重要 item lin 示例 ber intro