query-optimization - vertica 计划步骤中的内存分配如何发生?
问题描述
我有一种情况,即某个vertica
查询GROUP_BY_SPILLED
在其计划中(执行 a GROUP BY HASH
)。
我没有更改投影顺序的选项(以避免按哈希分组),因此我想增加此步骤接收的内存量。
假设我的查询收到的预算为5GB
. 5GB
查询步骤中的分布如何?
我找不到任何文档。
解决方案
看一下EXECUTION_ENGINE_PROFILES表。
使用PROFILE运行您的查询:
PROFILE SELECT .. FROM .. GROUP BY ..
从输出中获取 statement_id 并使用它来调查 EXECUTION_ENGINE_PROFILES。
给定一个只做的简单查询GROUP BY
,运行:
SELECT path_id,
operator_name,
counter_name,
sum(counter_value)
FROM v_monitor.execution_engine_profiles
WHERE transaction_id=<STATEMENT_ID>
AND counter_name ilike 'current memory capacity (bytes)'
GROUP BY 1,2,3
ORDER BY path_id;
path_id | operator_name | counter_name | sum
---------+---------------+---------------------------------+------------
-1 | NewEENode | current memory capacity (bytes) | 0
-1 | Root | current memory capacity (bytes) | 0
1 | ExprEval | current memory capacity (bytes) | 0
1 | GroupByHash | current memory capacity (bytes) | 1406074880
1 | GroupByPipe | current memory capacity (bytes) | 0
1 | ParallelUnion | current memory capacity (bytes) | 0
1 | StorageUnion | current memory capacity (bytes) | 0
2 | ExprEval | current memory capacity (bytes) | 0
2 | Scan | current memory capacity (bytes) | 0
有关在 Vertica 中进行分析的更多信息,请单击此处
我认为您无法修改或改进这些计数器值,除非使用RESOURCE POOLS增加查询预算
推荐阅读
- javascript - C# CEF 浏览器和 javascript - 单击按钮
- c# - 使用 String.StartsWith 方法时如何处理 NULL
- swift - SwiftUI 视频播放器如何设置 url
- graphql - 如何在 GraphQL 中使用 Gatsby 代码片段
- spring-boot - Spring security如何允许root url而不干扰“低于”根的安全性
- c++ - 不确定我是否正确地实现了 c++ 类
- java - 正则表达式 - 列出与模式不匹配的字符
- javascript - 抓取 Javascript 附加变量
- android - Android 将 gif 转换为动画 webp
- python - 在 tkinter 中,我正在创建一个树视图,它有很多列来适应我的框架,我的水平滚动条不能很好地工作