- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个非常技术性的问题,关于 Redshift 如何处理 DISTKEY
和 SORTKEY
内部以满足存储层和查询执行需求。我读过这个惊人的 post这很好地解释了每个关于 table 设计的含义。
我的问题是让我们假设我有一个包含三列的表 A:
CREATE TABLE (
orderdate timestamp distkey,
product_id varchar(50),
product_name varchar(250)
) SORTKEY (product_id)
DISTKEY
订购日期。但是,列
product_id
会发生什么?和
product_name
?这些是与
orderdate
一起分发的吗?在同一个切片上,然后当我执行查询时,Redshift 使用基于我的
SORTKEY
的区域映射指出具有数据的列的区域并检索它?
DISTKEY
一起存储在同一切片上。然后为了保证性能,用户甚至可以将查询集中在特定区域以提取所需的数据。所以我总体上可能是这样的:
DISTKEY
storage tier andSORTKEY
query execution behave
DISTKEY
所以我的数据是根据准时的列顺序存储的,所以如果稍后,我使用
SORTKEY
另一个给我的
DISTKEY
无法更改或更改,所以这是如何工作的?
DISTKEY
(日期不好,但只是遵循相同的示例)然后在内部按我的
SORTKEY
进行 Redshift 排序,给出类似的东西:
最佳答案
DISTKEY
分发 行 片之间。
在您的示例中,具有给定 orderdate
的所有行将位于同一切片中。这意味着 这些行的所有列 在那个切片中。
如果两个表具有相同的 DISTKEY,则两个表中具有相同 DISTKEY 列值的所有行都将位于同一片上。
顺便说一下,日期和时间戳不是 DISTKEY 的好选择,因为它们很少用于 JOIN
.唯一标识符,如 product_id
会做一个更好的 DISTKEY。一般规则是使用出现在最多/最大 JOIN 中的列。SORTKEY
确定行在表中的排序方式。对于存储在每个切片上的行,它们按 SORTKEY 顺序存储。每列的数据存储在单独的块中(并且很可能每列使用许多块),但在列块内,行的顺序相同。
例如,如果一个表有三列,那么每个切片至少会占用三个块(每列一个)。在这些列块中,行的顺序相同。
每个块还有一个最小值和最大值(“区域 map ”),这使得 Redshift 可以很容易地“跳过”不包含所需值的块。这极大地提高了性能,因为磁盘访问是操作中最慢的部分。
关于amazon-web-services - Redshift DISTKEY/SORTKEY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52885257/
我正在尝试使用 target-redshift 将数据推送到 aws-redshift https://pypi.org/project/target-redshift/ 我正在使用 airflow
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我正在寻找涵盖这个想法的 Material : 给定一个类似列表的数据结构(例如数据库表),应该引入一个 sortKey 属性(列) 反射(reflect)所需的排序顺序(ORDER BY sortK
Redshift 允许将多个列指定为 SORTKEY列,但大多数最佳实践文档的编写方式好像只有一个 SORTKEY。 如果我用 SORTKEY (COL1, COL2) 创建一个表,这是否意味着所有列
我正在编写一个程序来读取如下所示的文本文件: 3679 87 196 60 17914 12 18618 64 2370
(我这里用的是Python 2) 我有一个字典列表,比方说 dei = [{'name': u'Thor'}, {'name': u'Œdipus'}, {'name': u'Creon'}] 我想按
我正在编写代码,在数据库中创建索引。使用 ICU 库,我的工作流程是: 用户语言环境中的字符串 -> 转换为 utf8 -> 规范化 utf8 -> 调用 ICU ucol_getSortKey 获取
我有一个非常技术性的问题,关于 Redshift 如何处理 DISTKEY和 SORTKEY内部以满足存储层和查询执行需求。我读过这个惊人的 post这很好地解释了每个关于 table 设计的含义。
有人可以帮我解决这个问题吗?它一直有效,直到我改变了一些东西试图优化它......该死! 这是我的 table 模型: class MyTableModel extends DefaultTableM
我开始对查询调优进行一些研究,并且一直在尝试使用 distkey 和 sortkey。从我读过的内容来看,如果我将 distkey 设置为连接列,查询计划器将使用合并连接而不是散列连接,这在 Reds
我在 redshift 中有一个表,其中包含十亿条记录(日志文件条目)。它有一个时间戳列 ts,上面有 distkey 和 sortkey。以下查询: select ts from apilogs
我有一个在 Spring Boot 中运行的 Spring Batch 项目,它运行良好。对于我的读者,我将 JdbcPagingItemReader 与 MySqlPagingQueryProvid
我正在尝试配置 JdbcPagingItemReader bean,但我不确切知道表中列的名称,因此我想知道是否有一种方法可以在没有排序键的情况下配置 PagingQueryProvider。 @Be
我正在将表的夜间快照加载到 Redshift 中。我在表的末尾添加了一个名为“rundate”的列,它仅表示数据何时通过我的 ETL 过程提取。它也是主要的排序键。 每晚的表格变得越来越长,其中许多有
我需要获取所有列,它们是 Redshift 中 sortkey 的一部分。 我尝试使用“select * from svv_table_info”获取信息,但它只有一列的信息。你能告诉我,我如何获取表
我需要获取所有列,它们是 Redshift 中 sortkey 的一部分。 我尝试使用“select * from svv_table_info”获取信息,但它只有一列的信息。你能告诉我,我如何获取表
让我问一些有关 AWS Redshift 上的列压缩的问题。 现在我们正在验证使用适当的 diststyle、sortkeys 和列压缩可以提高性能。 如果我的理解是正确的,列压缩可以帮助降低 IO
我正在尝试阅读 Python 配置文件(rs)的文档。我在 Win10 笔记本电脑上的 Anaconda 中使用 Python 3.6。 https://docs.python.org/3/libra
我想创建带有 GSI 的 DynamoDB 表。对于这个GSI,目前我只需要PartitionKey,因为我只想通过一个属性进行查询。但将来我可能需要通过其他属性进行查询。因此,我正在考虑添加一个 S
我是一名优秀的程序员,十分优秀!