Prestodb Mongo查询花太多时间



我正在通过mongoDB连接器在prestodb中运行查询。查询从MongoDB中的一个集合中获取数据。查询类似于:

SELECT studentId, classId, sum(date_diff('DAY', entryTime, (CASE WHEN (exitTime <= TIMESTAMP '2018-04-15 23:59:59 UTC') THEN exitTime ELSE TIMESTAMP '2018-04-15 23:59:59 UTC' END))) as timeSpent 
FROM mongodb.school.student WHERE entryTime BETWEEN TIMESTAMP '2017-10-30 00:00:00 UTC' AND TIMESTAMP '2018-05-15 23:59:59 UTC' AND contains(classId, '1234') AND subject = 'Maths'
GROUP BY classId, studentId
ORDER BY timeSpent DESC;

我在收藏中有大约800万个记录,此查询大约需要45秒才能执行。

我的prestodb是在一个单个Ubuntu实例上设置的,该实例充当协调员,总RAM为8GB。jvm.config文件看起来像:

-server
-Xmx8G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+AggressiveOpts
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

config.properties文件具有以下配置:

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://localhost:8080

-Xmx8G是较早的-Xmx4G,但我将其更改为-Xmx8G尝试尝试,但性能几乎相同。我:

  • 使用太低RAM(8GB(的实例?
  • 我应该尝试以群集运行prestodb吗?如果有 6000万记录在该收集中使用此查询?

还是我当前配置本身的东西?

请在presto中的查询分析,并向我们展示输出。应该清楚查询的哪一部分大部分时间。

相关内容

  • 没有找到相关文章