批量插入的 Redshift 查询队列使用情况
Posted
技术标签:
【中文标题】批量插入的 Redshift 查询队列使用情况【英文标题】:Redshift query queue usage on batch inserts 【发布时间】:2014-08-26 19:35:54 【问题描述】:对于 Redshift 中的查询队列调度,DML 批量插入 JDBC 查询是否收到与选择类型查询相同的处理?特别是,是否会将多个批量插入分配给适当的 WLM 队列(由用户/用户组定义)并按照队列并发级别的指定同时运行?
实际上不可能通过 Redshift 控制台了解哪些查询在哪些队列上执行以及哪些正在并发执行,但我必须相信,通过我们的测试,批量插入不是并发执行,而是串行执行。谁能给我更多的见解?
谢谢。
【问题讨论】:
【参考方案1】:批量插入无法在 Redshift 中并行运行。这正是 Redshift 网络研讨会、文档和文章宣传使用 COPY 命令的原因,该命令将 S3 中的数据集拉到一个分隔文件上,试图尽可能地推动它们并行。
我已经尝试过几次来检查 INSERT 与 COPY 的性能,并且规模差异非常大。 COPY 命令非常棒,而且速度极快。
我建议您更改数据加载逻辑以使用分隔文件 -> S3 -> Redshift 使用 COPY 而不是批量插入。
摘自 AWS Redshift 文档 - [Using a COPY command to load data]
我们强烈建议使用 COPY 命令加载大量 数据。使用单独的 INSERT 语句填充表可能是 慢得令人望而却步。或者,如果您的数据已经存在于 其他 Amazon Redshift 数据库表,使用 INSERT INTO ... SELECT 或 CREATE TABLE AS 以提高性能。有关信息,请参阅插入或 将表创建为。
【讨论】:
以上是关于批量插入的 Redshift 查询队列使用情况的主要内容,如果未能解决你的问题,请参考以下文章