【问题标题】:Without changing memory limit and without affecting query performance. Is there anyway to improve Impala memory issue?不改变内存限制,不影响查询性能。有什么办法可以改善 Impala 内存问题吗?
【发布时间】:2022-01-22 14:46:33
【问题描述】:
我想知道-
- 不影响 SQL 查询性能
- 不降低内存限制
有什么办法可以改善 impala 内存错误问题?
我得到了一些建议,比如在我的 SQL 查询中更改我的连接语句
【问题讨论】:
标签:
sql
memory
hive
impala
memory-limit
【解决方案1】:
Impala 使用内存中分析引擎,因此在各个方面都尽可能地保持最小化。
-
过滤器 - 尽可能多地使用过滤器。如果可以,请使用子查询并在子查询中进行过滤。
-
联接 - 内存问题的主要原因 - 您需要智能地使用联接。根据经验法则,在内部连接的情况下 - 首先使用驱动表,然后是最小表,然后是下一个小表,依此类推。对于左连接,您可以使用相同的拇指规则。因此,根据它们的大小(列和计数)移动表格。
此外,尽可能多地使用过滤器。
-
操作,如
distinct、regexp、IN、连接条件或过滤器中的 concat/function 可能会减慢速度。请确保它们是绝对必要的,您无法避免它们。
-
选择语句、子查询中的列数 - 尽量减少。
-
选择语句、子查询中的操作 - 尽量减少。
-
分区 - 保持优化,以便您获得最佳性能。更多的分区会减慢 INSERT,更少的分区会减慢 SELECT。
-
统计数据 - 创建每日计划以收集所有表和分区的统计数据,以加快速度。
-
解释计划 - 在查询运行时获取解释计划。查询执行给你一个独特的查询链接。您将在 SQL 的操作中看到很多见解。