Я начал тестировать Neo4j для программы и столкнулся с некоторыми проблемами производительности. Как упоминалось в заголовке, Neo4j напрямую встроен в код Java.
Мои графики содержат около 4 миллионов узлов и несколько сотен миллионов связей. Мой тест состоит в том, чтобы просто отправить запрос, подсчитывающий количество входящих отношений для узла.
Эта программа использует процедуру ExecutionEngine выполнить для отправки следующего запроса:
start n=node:node_auto_index(id="United States") match s-[:QUOTES]->n return count(s)
Просто добавив несколько отпечатков, я могу увидеть, сколько времени занял этот запрос, что обычно составляет около 900 мс, что очень много.
Что меня больше всего удивляет, так это то, что в ответ я получаю «время выполнения запроса», которое действительно отличается.
Например, запрос вернул:
+----------+
| count(n) |
+----------+
| 427738 |
+----------+
1 row
1 ms
Согласно этому ответу, я понимаю, что Neo4j потребовал 1 мс для запроса, но когда я распечатываю некоторые сообщения журнала, я вижу, что на самом деле это заняло 917 мс.
Я предполагаю, что 1 мс равно времени, необходимому для поиска индексированного объекта «Соединенные Штаты», что означает, что Neo4j требуется около 916 мс для остальных, например, для подсчета количества отношений. В этом случае, как я могу получить производительность геттера для этого запроса?
Заранее спасибо!