2015-10-19 4 views
1

Я хотел бы предоставить тот же уровень поддержки настройки запроса в Neo4j, который я предоставляю для реляционных баз данных. Я понимаю, что многие проблемы настройки лучше всего решать с помощью проектирования данных, но иногда вам просто нужно помочь оптимизатору. Не так много документации об оптимизации и настройке запросов в Neo4j 2.2.5, поэтому я надеюсь, что кто-то может помочь мне ответить на несколько вопросов о настройке запроса Cypher в Neo4j.Neo4j Cypher Query Tuning

1) Оптимизатор: в реляционной СУБД одним из способов помочь оптимизатору принять правильные решения является обновление статистики. Я не могу найти документацию о том, как оптимизатор, основанный на затратах, принимает свои решения, но я бы ожидал, что он должен собрать некоторую статистику о данных, чтобы получить более качественные ответы, чем мы получили от оптимизатора на основе правил.

a. Есть ли способ обновить эти статистические данные?

b. Получаю ли я какую-либо выгоду от снижения производительности и воссоздания индексов в загружаемой нами базе данных и готов сделать только чтение?

c. Знаете ли вы о какой-либо документации по оптимизатору, которая может помочь мне понять решения, которые она принимает?

2) Подсказки уровня запроса: я знаю, что у Cypher есть опция подсказок индекса, но во многих случаях было бы здорово, если бы у него был эквивалент подсказки запроса «Force Order», доступный в TSQL. Знаете ли вы, стоит ли мне надеяться на такой запрос в ближайшем выпуске Neo4j?

3) Временные объекты: В реляционной СУБД иногда мне просто приходится смириться с ограничениями в оптимизаторе. В этих случаях мы создаем временные объекты для материализации части данных, чтобы упростить наши запросы. Есть ли признаки того, что временные метки или какой-либо другой временный объект будут доступны в ближайшем выпуске Neo4j?

Благодаря

+0

Все хорошие вопросы! Я бы сказал, что вы можете 'ПРОФИЛЬ' /' EXPLAIN' ваши запросы, если вы еще не знаете об этом –

ответ

0

Вы можете использовать профиль или объяснить и так, сколько децибел хитов у вас есть. Вам просто нужно попытаться сохранить низкое дробление.

Вы также можете использовать «USING INDEX n: Swedish (surname)», чтобы вы знали, что neo4j будет вынужден использовать индекс.

Вы можете использовать ПЛАНИРОВАНИЕ ПРАВИЛА или Планировщика.

+0

Спасибо. Я знаю о профиле и объясняет варианты и подсказки индекса. Я ищу конкретную информацию о высокоуровневых инструментах настройки, таких как статистика, перестроения индексов, подсказки на уровне запросов и временные объекты. –

+0

Я думаю, вы должны проверить его. – Mvde