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