我正在针对Vertica表运行查询,该表具有接近500列且仅有10万行。
一个简单的查询(比如来自mytable的select avg(col1))需要 10秒,正如Vertica vsql客户端使用\ timing命令报告的那样。
但是当检查此查询的列query_requests.request_duration_ms时,没有提到10秒,它报告的 100毫秒
。query_requests.start_timestamp列表示在我实际执行命令后10秒开始处理。
resource_acquisitions表显示资源获取没有延迟,但是其queue_entry_timestamp列还显示了在我实际执行命令10秒后发生的队列条目。
相同的查询在相同的数据上运行,但在只有一列的表上会立即返回。由于我直接在Vertica节点上运行查询,因此我排除了任何网络延迟问题。
在执行查询之前,感觉Vertica正在做某事。这占用了大部分时间,并且与表的列数有关。知道它可能是什么,我可以尝试解决它吗?
我在没有负载的测试环境中使用Vertica 8。
答案 0 :(得分:1)
我正在运行Vertica 8.1.0-1,似乎问题是由查询规划阶段的Vertica错误导致性能下降造成的。它在版本> = 8.1.1中解决: https://my.vertica.com/docs/ReleaseNotes/8.1./Vertica_8.1.x_Release_Notes.htm
VER-53602 - 优化程序 - 此修复程序在查询规划阶段提高了复杂的查询性能。