Apache Drill - первое время старта - PullRequest
0 голосов
/ 11 октября 2018

Я использую SQL на сервере MongoDB, используя Drill.Я получаю время отклика ~ 500 мс.Но большая часть этого времени проводится на этапе «Первый запуск».Фактическая обработка в сверле занимает гораздо меньше времени (~ 50 мс).Почему «Первый запуск» занимает так много времени?Я хотел бы знать, что делается на этом этапе и, если возможно, оптимизировать это.

Профиль фрагмента

Профиль оператора

1 Ответ

0 голосов
/ 11 октября 2018

После первого запроса Drill создает множество объектов кэша для улучшения дальнейшей работы, подробности см. В Generated Code Cache [1], [2], [3], StoragePluginRegistry Cache [4].Также MongoSchemaFactory создает кэш для ваших database и tableName [5], срок действия которого истекает через 1 минуту.

Скорее всего, вы получите аналогичное время, если попытаетесь выполнить запрос, когда срок действия кэша истекает.

[1] https://github.com/paul-rogers/drill/wiki/CG-Code-Cache
[2] https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/compile/ByteCodeLoader.java#L36
[3] https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/compile/CodeCompiler.java#L145
[4] https://github.com/apache/drill/blob/master/exec/java-exec/src/main/java/org/apache/drill/exec/store/StoragePluginRegistryImpl.java#L90
[5] https://github.com/apache/drill/blob/master/contrib/storage-mongo/src/main/java/org/apache/drill/exec/store/mongo/schema/MongoSchemaFactory.java#L66

...