В чем разница между `result_available_after` и` result_consumed_after` в `BoltStatementResultSummary`? Как измерить время выполнения запроса? - PullRequest
0 голосов
/ 24 марта 2020

Я пытался понять из документов здесь , цитируя из do c

result_available_after = Нет Время, необходимое серверу для получения результата.

result_consumed_after = Нет Время, необходимое серверу для получения результата.

Я до сих пор не понимаю фактической разницы. Какой из них следует учитывать, если я хочу масштабировать программу и найти время выполнения запроса. И почему result_available_after становится 0 ms, если я запускаю тот же запрос еще раз? Это из-за кеша? Я попытался изменить настройку dbms.memory.pagecache.size=1M, как предложено здесь , но не сработало. Как измерить только время выполнения запроса?

Я использую Neo4j 4.0 и драйвер neo4j python для запросов.

1 Ответ

1 голос
/ 25 марта 2020

result_available_after - это время до того, как первый результат был найден и доступен. Может быть еще много результатов, которые еще нужно найти и передать из запроса, но это разумно, когда клиент может начать получать результаты обратно.

result_consumed_after - это время, когда все результаты были найдены и использованы / отправлены клиенту, который сделал запрос. На этом этапе запрос полностью завершен.

Что касается просмотра result_available_after go до 0, это, вероятно, комбинация двух вещей:

  1. Поскольку вы просто выполнил запрос ранее, запрос был кэширован, и поэтому для последующих исполнений нет необходимости компилировать и планировать, план просто извлекается из кэша и выполняется. Это исключает время компиляции и планирования.

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

...