批量插入的 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 查询队列使用情况的主要内容,如果未能解决你的问题,请参考以下文章

AWS Redshift 批量插入 + 编码定义

微批量加载到 Redshift - 一些实际问题

在 GAE 中使用任务队列插入批量数据

批量发送短信,并批量插入短信记录

sql server有批量插入和批量更新的sql语句吗

mybatis怎样批量插入数据到oracle,就算id自动增长问题