Проблема с производительностью в запросе Aran go при возврате всего объекта - PullRequest
0 голосов
/ 01 апреля 2020

Я новичок в ArangoDB. Требуется некоторая помощь в повышении производительности запроса.

Технические характеристики: ArangoDb (3.6.2), Java 8 Springboot application (2.xx).

Я пытаюсь выполнить запрос, где он возвращает объект после объединения данных из нескольких графиков. Запрос выполняется бесконечно, когда я непосредственно возвращаю объект, где он работает быстрее (например, 75 секунд), когда я просто возвращаю элемент объекта.

for d in data
        return d

Вывод:

[{
accntDtl:{ //account detials here
         },
accntPrfl:{//accnt profile here
            },
//few other parameters
}]

return d - работает бесконечно.

, тогда как return d.accnt[0].accntDtl[0].accntId - выполняется за 75 секунд.

Что может быть возможным решением для увеличения его производительности?

Примечание: Этот запрос возвращает около 2 миллионов записей.

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

Заранее спасибо.

Обновления: включены AqlQueryOptions для потоковой передачи.

aqlQueryOptions.stream(true),aqlQueryOptions.batchSize(10000)

Потребляет то же самое:

while(cursor.hasNext()){
  result = cursor.next();
  //deserilize result as doc
  resultList.add(doc)
  ..... processing the data
}

Но эта итерация происходит 1 к 1, а не в партии 10 000, как указано в параметре batchSize , Я уверен, что использование курсора не рекомендуется. Пожалуйста, предложите наилучший способ использования этих данных в пакете из 10000 на каждой итерации.

1 Ответ

1 голос
/ 02 апреля 2020

Для такого запроса было бы полезно использовать потоковый курсор, установив stream в true при создании курсора AQL.

Вот справочная документация:

...