In the 红移常见问题解答 https://aws.amazon.com/redshift/faqs/ under
问:与大多数用于数据仓储和分析的传统数据库相比,Amazon Redshift 的性能如何?
它说如下:
高级压缩:列式数据存储比基于行的数据存储可以压缩更多,因为类似的数据按顺序存储在磁盘上。 Amazon Redshift 采用多种压缩技术,通常可以实现相对于传统关系数据存储的显着压缩。此外,Amazon Redshift 不需要索引或物化视图,因此比传统关系数据库系统使用更少的空间。将数据加载到空表时,Amazon Redshift 会自动对您的数据进行采样并选择最合适的压缩方案。
为什么会这样呢?
说实话,这有点不诚实(在我看来)。虽然 RedShift 没有这些,但我不确定这是否等同于说它不会从它们中受益。
物化视图
我真的不知道他们为什么这么说。可能是因为他们认为引擎的性能如此之高,以至于拥有它们的收益微乎其微。
我对此有异议,我所开发的产品保留了自己的具体化视图,并且可以通过这样做显示出显着的性能提升。也许 AWS 认为我一开始就一定做错了什么?
Indexes
RedShift 没有索引。
它确实有SORT ORDER
这与聚集索引非常相似。它只是一个用于对数据进行排序的字段列表(类似于复合聚集索引)。
甚至最近还推出了INTERLEAVED SORT KEYS
。这是对多个独立排序顺序的直接尝试。而不是按顺序订购a THEN b THEN c
it 有效地他们每个人的订单同时.
由于 RedShift 实现其列存储的方式,这变得可能。
- 每列与其他列分开存储
- 每列存储在 1MB 块中
- 每个1MB块都有汇总统计数据
除了作为存储模式之外,它实际上还成为一组伪索引。
- 如果数据按以下顺序排序a then b then x
- 但你想要z = 1234
- RedShift 首先查看块统计信息(针对 z 列)
- 这些统计数据将显示该块存储的最小值和最大值
- 这允许 Redshift 在某些条件下跳过许多这样的块
- 该实习生允许 RedShift 识别从其他列读取哪些块
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)