Od wersji Neo4j 2.2 dostępne są dodatkowe funkcje profilowania. Niektóre funkcje, które były dostępne tylko przez powłokę neo4j lub punkty końcowe REST, są teraz dostępne również w przeglądarce Neo4j, a niektóre funkcje są zupełnie nowe.
Możesz teraz użyć polecenia PROFILE
z kwerendą bezpośrednio w reploku Neo4j-browser, aby wykonać zapytanie i zobaczyć wizualizację planu wykonania.
PROFILE
MATCH (n:Peter {foo: 'Paul'})
RETURN n.bar, ID(n)
-------------
n.bar ID(n)
Mary 951

Dodatkowo, można teraz sprawdzić planu kwerend bez konieczności faktycznie go wykonać, na przykład w celu sprawdzenia zapytanie, które mogłyby zmienić bazę danych. Zrób to za pomocą polecenia EXPLAIN
, które zostało dodane do zapytania. Zobacz 15.2 How do I profile a query? z dokumentacji.
EXPLAIN
MATCH (n:Peter {foo: 'Paul'})
SET n.foo = 'Mary', n.bar = 'Paul'
RETURN n.foo, ID(n)
------------------------------------------
// Nothing returned, query is not executed

Podobnym Nowością jest również nowy planista „koszt na podstawie” zapytań, a także zdolność do wymusić użycie albo „kosztu” lub „reguły oparte” query planista dla wszystkich zapytań lub dla konkretnego zapytania. W dokumentacji zauważono, że nie wszystkie zapytania mogą być rozwiązywane przez "planer zapytań" oparty na kosztach, w którym to przypadku ustawienie zostanie zignorowane i użyty zostanie planer oparty na regułach. Zobacz 15.1 How are queries executed?
Aby wymusić użycie obu planowania zapytań dla wszystkich zapytań, zmień ustawienia query.planner.version
konfiguracji w conf/neo4j.properties
(serwer Neo4j) lub poprzez wywołanie metody .setConfig()
na obiekcie GraphDatabaseService
(Neo4j wbudowane). Ustaw go na COST
lub , a następnie zdecyduj, który planer zapytań ma ponownie użyć w Neo4j, ustaw go na default
(lub całkowicie usuń ustawienie). Zobacz 24.5 Configuration Settings, Starting an embedded database with configuration settings.
Aby wymusić użycie jednego z dwóch terminarzy zapytań dla określonego zapytania, należy dodać zapytanie do zapytania: CYPHER planner=cost
lub CYPHER planner=rule
.Zobacz 15.1 How are queries executed?
CYPHER planner=cost
MATCH (n:Peter {foo: 'Paul'})
RETURN n.bar, ID(n)
może PROFILE
lub EXPLAIN
zapytań z jednym z projektantów zapytań i widać żadnych różnic w jaki sposób realizować swoje zapytań.
Aby uzyskać pomoc w interpretacji planu wykonania, zobacz odpowiedni rozdział dokumentacji, 16. Execution Plans.
Dziękuję, Michael. To zadziałało dla mnie. –