Подтвердить что ты не робот

Есть ли способ показать план выполнения cypher?

Я видел тему (Понимание ключевого слова и плана выполнения Neo4j Cypher Profile), где упоминается ключевое слово профиля.

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

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

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

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

4b9b3361

Ответ 1

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

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

Или, перейдя на старый веб-ui в информационном меню "(i)" с левой стороны и выбрав самую нижнюю ссылку "webadmin" → http://localhost:7474/webadmin

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

Ответ 2

В соответствии с 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 Как профилировать запрос? из документации.

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

Связанная новая функция - это также новый планировщик запросов на основе затрат, а также возможность принудительно использовать либо планировщик запросов, основанный на затратах, либо планировщик запросов на основе правил для всех запросов или для любого конкретного запроса, В документации отмечается, что не все запросы могут быть разрешены планировщиком запросов на основе затрат, и в этом случае параметр будет проигнорирован и используется планировщик на основе правил. См. 15.1 Как выполняются запросы?

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

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

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

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

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