2013-07-20 13 views
5

Qualcuno potrebbe spiegare o fornire collegamenti in cui è possibile conoscere il comando del profilo e comprendere i piani di esecuzione della query di Cypher per le esigenze di ottimizzazione e capire come funziona Cypher.Comprensione della parola chiave e del piano di esecuzione di Neo4j Cypher Profile

Ad esempio, ho creato il seguente database di esempio Neo4j (versione 2.0).

create (ayan:Person{name:"Ayan",age:25}), 
(dixi:Person{name:"Dixi",age:26}), 
(thaggu:Person{name:"Thaggu",age:27}), 
(santosh:Person{name:"Santosh",age:28}), 
(ayan)-[:FRIEND]-(santosh), 
(ayan)-[:FRIEND]-(dixi), 
(thaggu)-[:FRIEND]-(dixi); 

Ora, quando ho eseguito la semplice domanda sotto,

profile match n:Person, n-[:FRIEND]-m where n.name="Ayan" return m; 

ottengo il seguente risultato, ma io sono non sono in grado di capire la spiegazione al di sotto del risultato. Per favore aiuto.

+--------------------------------+ 
| m        | 
+--------------------------------+ 
| Node[4]{age:28,name:"Santosh"} | 
| Node[2]{age:26,name:"Dixi"} | 
+--------------------------------+ 
2 rows 



==> ColumnFilter(symKeys=["n", "m", " UNNAMED17"], returnItemNames=["m"], _rows=2, _db_hits=0) 

==> PatternMatch(g="(m)-[' UNNAMED17']-(n)", _rows=2, _db_hits=0) 

==> Filter(pred="(Property == Literal(Ayan) AND hasLabel(n: Person))", _rows=1, _db_hits=4) 

==>  NodeByLabel(label="Person", identifier="n", _rows=4, _db_hits=0) 

risposta

5

l'informazione del profilo non è ancora finita e quindi non è documentata. Tuttavia, il numero critico è il _db_hits che non dovrebbe essere eccezionalmente alto dal momento che sono costosi.

1

Capire il piano di esecuzione

A partire dal Neo4j 2.2 c'è un capitolo nella documentazione che spiega il piano di esecuzione, vedi Chapter 16. Execution Plans.

Come al profilo di una query

C'è anche una nuova parola chiave profilatura, EXPLAIN, che consente di visualizzare il piano di esecuzione senza eseguire la query. Infine, esiste un nuovo pianificatore di query 'a costo basato' (in contrapposizione a 'basato su regole') e si può forzare l'uso di entrambi i pianificatori per tutte le query o per singole query. Vedere Is there a way to show cypher execution plan? per ulteriori dettagli sui nuovi servizi di profilazione e collegamenti alla relativa documentazione.

Problemi correlati