繁体   English   中英

PrestoDB Mongo查询花费太多时间

[英]PrestoDB Mongo query taking too much time

我正在通过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中为您的查询运行EXPLAIN ANALYZE并向我们显示输出。 应该清楚查询的大部分时间都花在查询上。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM