阅读:239回复:0
Redshift COPY 命令的默认行为是运行两个命令
复制分析第 1|2 阶段”和 “复制分析$temp_table_name” Amazon Redshift 运行这些命令来确定正在复制的数据的正确编码。当表为空时这可能很有用。但在以下情况下,额外的查询是无用的,应该消除: 当复制到临时表时(即作为 UPSERT 的一部分) 当表中已有数据时。对于现有表,编码不能更改。因此,即使 COPY 命令确定存在更好的编码样式,也不可能在不进行深复制操作的情况下修改表的编码。 在下面的示例中,单个 COPY 命令生成 18 个“分析压缩”命令和一个“复制分析”命令。 额外的查询可能会给 Amazon Redshift 上运行的其他查询带来性能问题。它们会增加并发性,因此可能会使 WLM 队列中的槽数量饱和,从而导致其他查询需要队列等待时间。
解决办法是调整COPY命令参数添加和“”。这些参数将在“UPSERT”期间禁用这些功能。 以下是使用这些设置执行的“COPY”命令的示例 不要使用 Redshift 作为 OLTP 数据库 将 Django 等应用程序框 电子邮件营销列表 架连接到 Amazon Redshift 是很常见的。当在应用程序中(即 OLTP 场景)使用 Redshift 数据时,这非常有用。但是,由于 Amazon Redshift 是一个 OLAP 数据库,因此它可能无法很好地处理这些查询。 使用 Redshift 作为 OLTP 数据库的挑战是查询可能缺乏传统 RDBMS 上存在的低延迟。 ![]() 与 OLTP 数据库不同,OLAP 数据库不使用索引。这是 Amazon Redshift 面向列的数据存储设计的结果,它为大数据分析工作负载提供了更好的性能。 考虑这个来自实时生产集群的示例。用户“ ”正在查询表“ ”,该表有 443,744 行。该查询运行了 374,372 次。每个查询返回一行。 每个查询扫描所有 443,744 行,运行大约需要 0.02 秒并返回一行。 对集群的影响是相当巨大的: 374,371 个查询 @ 0.02 秒,每个查询等于 7,487 秒,或 125 分钟的查询时间。提交队列会备份所有这些请求,从而影响集群中运行的所有其他查询的执行时间 查询量会增加并发性,并可能超过可用 WLM 插槽的数量 , 这会导致该队列中运行的其他查询需要等待时间。 |
|