【问题标题】:Oracle index to AWS Redshift SortkeyOracle 索引到 AWS Redshift 排序键
【发布时间】:2018-03-18 12:36:00
【问题描述】:

我是 Redhsift 的新手,正在将 oracle 迁移到 Redshift。

其中一个 oracle 表有大约 60 个索引。 AWS 建议最好使用大约 6 个复合排序键。

这 60 个 oracle 索引如何转换为 Redhsift 排序键?我知道没有自动转换或不能将所有 60 个作为复合排序键。我是红移新手,我想知道这种转换通常是如何进行的。

在 Oracle 中,我们可以不断地向同一个表添加索引,并且查询/报告可以使用它们。但在 Redshift 中,更改排序键是通过重新创建表来实现的。我们如何使在同一张表上使用不同过滤列和连接列的所有查询具有最佳性能?

谢谢

【问题讨论】:

  • 如果您认为正确,请在下面接受我的回答。

标签: amazon-redshift


【解决方案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/

【讨论】:

  • 感谢 nevsv 的输入。作为一个新的 Redshift 用户,这确实有助于从 Redshift 的角度进行思考,而不是提升和转移 Oracle。我知道我在这些方面学到/练习了很多。
【解决方案2】:

先说几个关键点

Redshift 甲骨文

Redshift 没有索引,Redshift 排序键 Oracle 索引。 希望您不会期望 Redshift 取代 Oracle 来处理您的 OLTP 工作负载。这 60 个索引中的大多数可能用于优化 OLTP 类型的工作负载。

每个表的最大 Redshift 排序键 = 1

您不能以超过 1 种方式对 Redshift 数据进行排序!排序键对您的表数据进行排序。它不是一个索引。 您可以指定交错或复合排序键。

查询调优 希望您将使用 Redshift 进行分析类型查询。您应该根据预期的查询定义排序和分布。你应该遵循最佳实践here 和教程here

调整 Redshift 部分是一门艺术,您需要反复试验!

如果您需要这方面的具体指导,请您编辑您的问题以具体说明您在做什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 2018-11-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多