我是Redhsift的新手并将oracle迁移到Redshift。
其中一个oracle表有大约60个索引。 AWS建议使用大约6个复合排序键。
这60个oracle索引如何转换为Redhsift排序键?我知道没有自动转换或不能将所有60个作为复合排序键。我是redshift的新手,我可以知道,这种转换通常是如何接近的。
在Oracle中,我们可以继续向同一个表添加索引,查询/报告可以使用它们。但是在Redshift中,sortkeys是通过重新创建表来实现的。我们如何使在同一个表上使用不同过滤列和连接列的所有查询都具有最佳性能?
由于
答案 0 :(得分:1)
Redshift是柱状数据库,它没有与Oracle完全相同的索引。
您可以将Redshift的复合排序键(不是交错的)视为Oracle中的IOT(索引组织表),所有数据都通过此复合键进行物理排序。
如果在x列上创建交叉排序键,它将以某种方式作为每个x列的单独索引。
无论如何,作为列式数据库,Redshift可以在许多聚合查询中胜过Oracle,因为它具有压缩和数据结构。影响Redshift性能的主要因素是分发方式和密钥,排序键和列编码。
如果您无法使用一个表结构填充所有查询,则可以复制具有不同结构但具有相同数据的表。这种方法广泛用于大数据柱状数据库(例如Vertica中的投影),并有助于实现存储成本的性能。
请查看此页面,其中包含有关Redshift性能的一些有用提示: https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-techniques-for-amazon-redshift/
答案 1 :(得分:0)
首先是几个关键点
Redshift<>甲骨文强>
Redshift没有索引,Redshift排序键<> Oracle索引。 希望您不要期望Redshift为您的OLTP工作负载替换Oracle。这60个索引中的大多数都可能用于优化OLTP类型的工作负载。
每张桌子的最大红移排序键= 1
您不能以多种方式对Redshift数据进行排序!排序键命令您的表数据。它不是一个索引。 您可以指定交错或复合排序键。
查询调整 希望您将使用Redshift进行分析类型查询。您应该根据预期的查询定义排序和分发。您应该遵循最佳做法here和教程here
调整Redshift部分是一门艺术,你需要使用反复试验!
如果您需要具体的指导,请编辑您的问题以具体了解您的工作情况?