Начиная с версии 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
Кроме того, теперь вы можете осмотреть план запроса, не имея на самом деле выполнить его, например, чтобы проверить запрос, который будет изменять базу данных. Сделайте это с помощью команды 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
Связанная новая функция также новый «на основе затрат» планировщик запросов, а также способность заставить использование либо «стоимости на основе» или «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.
Спасибо, Майкл. Это сработало для меня. –