标签: paraccel

如何在RedShift/ParAccel中测量磁盘上的表空间

我在RedShift中有一张桌子.如何查看它使用了多少磁盘空间?

amazon-web-services paraccel amazon-redshift

20
推荐指数
2
解决办法
2万
查看次数

S3 - > Redshift无法处理UTF8

我们在S3中有一个文件,通过COPY命令加载到Redshift中.导入失败,因为VARCHAR(20)值包含在复制命令期间Ä被翻译的值..,现在对于20个字符来说太长了.

我已验证S3中的数据是否正确,但COPY在导入期间无法理解UTF-8字符.有人找到了解决方案吗?

amazon-s3 paraccel amazon-redshift

9
推荐指数
1
解决办法
9545
查看次数

Amazon Redshift Equality过滤器性能和排序键

红移是否有效(即二进制搜索)发现,是在A列排序,以便与条件A的查询表中的一个块=?

作为一个例子,让有用〜500米行的表T,〜50个场,分布和分类上场A.字段A具有高基数-所以有〜4.5米不同的A值,其中恰好在相同的行数T:每个值约100行.
假设具有单个XL节点的红移群集.
字段A未压缩.所有其他字段都有一些表单压缩,如ANALYZE COMPRESSION所示.与未压缩的表相比,给出1:20的比率.

给出一个简单的查询:

select avg(B),avg(C) from
(select B,C from T where A = <val>)
Run Code Online (Sandbox Code Playgroud)

在VACUUM和ANALYZE之后,给出了以下解释计划:

XN Aggregate (cost=1.73..1.73 rows=1 width=8)
-> XN Seq Scan on T (cost=0.00..1.23 rows=99 width=8)
Filter: (A = <val>::numeric)
Run Code Online (Sandbox Code Playgroud)

此查询需要39秒才能完成.
主要问题是:这是红移的预期行为吗?

根据选择最佳
排序键的文档 :"如果对一列进行频繁范围过滤或相等过滤,请将该列指定为排序键.Redshift可以跳过读取该列的整个数据块,因为它会跟踪最小值以及存储在每个块上的最大列值,并且可以跳过不适用于谓词范围的块. "

选择排序键时:
"依赖于排序数据的另一个优化是范围限制谓词的有效处理.Amazon Redshift将列数据存储在1 MB磁盘块中.每个块的最小值和最大值都存储为元数据的一部分.如果范围限制列是排序键,则查询处理器能够使用最小值和最大值在表扫描期间快速跳过大量块.例如,如果表存储按日期排序的五年数据,查询指定一个月的日期范围,从扫描中可以消除多达98%的磁盘块.如果数据未排序,则必须扫描更多磁盘块(可能全部).有关这些优化的信息,请参阅选择分发键. "

次要问题:
在排序键上进行上述跳过扫描的复杂性是多少?它是线性的(O(n))还是二元搜索的一些变体(O(logn))?
如果密钥已排序 - 正在跳过唯一可用的优化?
在解释计划中,这种"跳过"优化会是什么样子?
以上是解释此查询可能的最佳方法吗?
在这种情况下,可以预期红移最快的结果是什么?
vanilla ParAccel在这个用例中有不同的行为吗?

amazon-web-services paraccel amazon-redshift

5
推荐指数
1
解决办法
3028
查看次数

在RedShift中第一次执行查询时的长运行时间

我注意到我第一次在RedShift上运行查询时需要3-10秒.当我再次运行相同的查询时,即使在WHERE条件中使用不同的参数,它也会快速运行(0.2秒).查询我在谈论在一个包含3个整数列的约1M行的表上运行.

由RedShift第一次运行时编译查询,然后重新使用编译后的代码,导致执行时间的巨大差异?

如果是 - 如何始终保持编译查询的缓存温暖?

还有一个问题:给出queryA和queryB.我们假设queryA首先被编译和执行.queryB与queryA有多相似,这样queryB的执行将使用为queryA编译的代码?

paraccel amazon-redshift

5
推荐指数
1
解决办法
2425
查看次数

Amazon Redshift/PostgreSQL 中的高效 GROUP BY CASE 表达式

在分析处理中,通常需要将“不重要”的数据组折叠到结果表中的一行中。实现此目的的一种方法是按 CASE 表达式进行 GROUP BY,其中通过返回单个值(例如,组的 NULL)的 CASE 表达式将不重要的组合并为一行。这个问题是关于在 Amazon Redshift 中执行此分组的有效方法,它基于 ParAccel:在功能方面接近 PosgreSQL 8.0。

例如,考虑表中的 GROUP BY,type其中url每行都是单个 URL 访问。目标是执行聚合,以便为 URL 访问计数超过特定阈值的每个 (type, url) 对发出一行,并为访问次数超过特定阈值的所有 (type, url) 对发出一行 (type, NULL )计数低于该阈值。结果表中的其余列将具有基于此分组的 SUM/COUNT 聚合。

例如以下数据

+------+----------------------+-----------------------+
| type | url                  | < 50+ other columns > |
+------+----------------------+-----------------------+
|  A   | http://popular.com   |                       |
|  A   | http://popular.com   |                       |
|  A   | < 9997 more times>   |                       |
|  A   | http://popular.com   |                       |
|  A   | …
Run Code Online (Sandbox Code Playgroud)

sql postgresql group-by paraccel amazon-redshift

5
推荐指数
1
解决办法
1万
查看次数

在没有功能或存储过程的Amazon RedShift中进行Upsert

由于在RedShift中不支持用户定义的函数或存储过程,我如何UPSERT在RedShift中实现使用ParAccel(PostgreSQL 8.0.2分支)的机制.

目前,我正在尝试使用IF实现UPSERT机制...那么... ELSE ...声明例如: -

IF NOT EXISTS(SELECT...WHERE(SELECT..))
              THEN INSERT INTO tblABC() SELECT... FROM tblXYZ
              ELSE UPDATE tblABC SET.,.,.,. FROM tblXYZ WHERE... 
Run Code Online (Sandbox Code Playgroud)

这给了我错误.因为我正在独立编写此代码而不将其包含在函数或SP中.那么,有没有任何解决方案来实现UPSERT.

谢谢

paraccel amazon-redshift

2
推荐指数
1
解决办法
4545
查看次数

使用Amazon RedShift转动表格

我在Amazon RedShift中有几个表,它们遵循多个维度列的模式和一对度量标准名称/值列.

DimensionA  DimensionB  MetricName  MetricValue
----------  ----------  ----------  -----------
dimA1       dimB1       m1          v11
dimA1       dimB2       m1          v12
dimA1       dimB2       m2          v21
dimA2       dimB2       m1          v13
dimA3       dimB1       m2          v22        
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种好方法来将数据展开/转动为每个唯一维度集合的一行形式,例如:

DimensionA  DimensionB  m1   m2 
----------  ----------  ---  ---
dimA1       dimB1       v11
dimA1       dimB2       v12  v21
dimA2       dimB2       v13
dimA3       dimB1            v22        
Run Code Online (Sandbox Code Playgroud)

生成执行此展开的查询的好模式是什么?

亚马逊红移是基于ParAccel和支持的PostgreSQL 8.0.2,它不具有crosstab,unnest,pivotunpivot.

sql pivot paraccel amazon-redshift

2
推荐指数
1
解决办法
7643
查看次数

RedShift / ParAccel 中 UNION 选择查询的性能非常差

我在红移中有两个表:

  • tbl_current_day - 大约 450 万行
  • tbl_previous_day - 大约 450 万行,数据与 tbl_current_day 完全相同

除此之外,我还有一个名为qry_both_days的视图,定义如下:

CREATE OR REPLACE qry_both_days AS 
SELECT * FROM tbl_current_day
UNION SELECT * FROM tbl_previous_day;
Run Code Online (Sandbox Code Playgroud)

当我对其中一个单独的表运行查询时,我得到了预期的非常好的性能。例如,以下查询运行 5 秒:

select count(distinct person_id) from tbl_current_day;
-- (person_id is of type int)
Run Code Online (Sandbox Code Playgroud)

解释计划:

 XN Aggregate  (cost=1224379.82..1224379.82 rows=1 width=4)
   ->  XN Subquery Scan volt_dt_0  (cost=1224373.80..1224378.61 rows=481 width=4)
         ->  XN HashAggregate  (cost=1224373.80..1224373.80 rows=481 width=4)
               ->  XN Seq Scan on tbl_current_day  (cost=0.00..979499.04 rows=97949904 width=4)
Run Code Online (Sandbox Code Playgroud)

请注意,宽度是 4 个字节,因为它应该是,因为我的列是 int 类型。

但是,当我在 …

paraccel amazon-redshift

1
推荐指数
1
解决办法
6522
查看次数