2013-12-17 4 views
13

Я видел тему (Understanding Neo4j Cypher Profile keyword and execution plan), где указан профиль.Есть ли способ показать план выполнения cypher?

Я не мог использовать его в сообществе Neo4j 2.0.0RC1.

Peter написал, что он не полностью реализован.

Будут ли поддерживаться?

Я имею в виду, это может быть интересно наблюдать изменения плана как мы настроить запрос ...

ответ

15

Вы все еще можете найти Neo4j оболочку, где вы можете запустить команду profile.

либо путем подключения к запущенному серверу, начиная bin/neo4j-shell

Или переключиться на старый веб-интерфейса в «(I)» Info-меню на левой стороне и выбрать самую нижнюю ссылку «WebAdmin» - >http://localhost:7474/webadmin

Профилирующая информация будет добавлена ​​в браузер позже, когда ее будет легче читать и понимать.

+0

Спасибо, Майкл. Это сработало для меня. –

14

Начиная с версии Neo4j 2.2 имеются дополнительные средства для профилирования. Некоторые функции, доступные только через neo4j-shell или конечные точки REST, теперь доступны также в Neo4j-браузере, а некоторые функции новы вообще.

Теперь вы можете использовать команду PROFILE с запросом cypher непосредственно в Neo4j-браузере для выполнения запроса и просмотра визуализации плана выполнения.

PROFILE 
MATCH (n:Peter {foo: 'Paul'}) 
RETURN n.bar, ID(n) 

------------- 
n.bar ID(n) 
Mary 951 

Cypher 2.2 profile

Кроме того, теперь вы можете осмотреть план запроса, не имея на самом деле выполнить его, например, чтобы проверить запрос, который будет изменять базу данных. Сделайте это с помощью команды EXPLAIN, добавленной к запросу. См. 15.2 How do I profile a query? из документации.

EXPLAIN 
MATCH (n:Peter {foo: 'Paul'}) 
SET n.foo = 'Mary', n.bar = 'Paul' 
RETURN n.foo, ID(n) 

------------------------------------------ 
// Nothing returned, query is not executed 

Cypher 2.2 explain

Связанная новая функция также новый «на основе затрат» планировщик запросов, а также способность заставить использование либо «стоимости на основе» или «Rule Based» запрос планировщик для всех запросов или для любого конкретного запроса. В документации отмечается, что не все запросы могут быть разрешены планировщиком запросов на основе затрат, и в этом случае параметр будет проигнорирован и используется планировщик на основе правил. См 15.1 How are queries executed?

Чтобы принудительно использовать любой планировщик запросов для всех запросов, установите параметр query.planner.version конфигурации в conf/neo4j.properties (сервер Neo4j) или путем вызова метода .setConfig() на вашем GraphDatabaseService объекта (Neo4j встроенный). Установите его на COST или RULE, и чтобы дать решение о том, какой планировщик запросов использовать для Neo4j, установите его на default (или вообще удалите настройку). См. 24.5 Configuration Settings, Starting an embedded database with configuration settings.

Чтобы принудительно использовать планировщик запросов для конкретного запроса, добавьте запрос с помощью CYPHER planner=cost или CYPHER planner=rule.См 15.1 How are queries executed?

CYPHER planner=cost 
MATCH (n:Peter {foo: 'Paul'}) 
RETURN n.bar, ID(n) 

Вы можете PROFILE или EXPLAIN запросы с любым из планировщиков запроса и увидеть какие-либо различия в том, как они реализуют свои запросы.

Для получения информации о толковании плана выполнения см. Соответствующую главу документации, 16. Execution Plans.

Смежные вопросы