如何从 AWS S3 检查 Redshift COPY 命令性能?

How to check Redshift COPY command performance from AWS S3?

我正在开发一个应用程序,我将在其中将数据加载到 Redshift

我想上传文件到S3,使用COPY命令将数据加载到多个tables .

对于每次这样的迭代,我需要将数据加载到 20 tables 左右。

我现在正在创建 20 个 CSV 文件 用于将数据加载到 20 tables 其中对于每次迭代, 20 个创建的文件将被加载到 20 tables。对于下一次迭代,将创建新的 20 CSV 文件并将其转储到 Redshift.

在我当前的系统中,每个 CSV 文件最多可包含 1000 行,应将其转储到 table 中。每次迭代最多 20000 行 20 tables.

我想进一步提高性能。我经历了 https://docs.aws.amazon.com/redshift/latest/dg/t_Loading-data-from-S3.html

此时,我不确定将 1 个文件加载到 1 个 Redshift table 需要多长时间。真的值得将每个文件拆分成多个文件并并行加载吗?

是否有任何来源或计算器可以根据列数和行数给出数据加载到 Redshift tables 的近似性能指标,以便我可以决定是否在移动到 Redshift.

之前继续拆分文件

您还应该通读加载数据 - 最佳实践指南中的建议:https://docs.aws.amazon.com/redshift/latest/dg/c_loading-data-best-practices.html

关于文件数量和并行加载数据,建议是:

  • 从单个文件加载数据会强制 Redshift 执行 序列化加载,这比并行加载慢得多。
  • 应拆分加载数据文件,使文件大小大致相等, 压缩后在 1 MB 到 1 GB 之间。为获得最佳并行性,压缩后的理想大小介于 1 MB 和 125 MB 之间。
  • 文件数量应该是你的切片数量的倍数 群集。

最后一点对于实现最大吞吐量很重要 - 如果您有 8 个节点,那么您需要 n*8 个文件,例如16、32、64 ... 这样所有节点都在并行执行最大工作量。

也就是说,20,000 行在 Redshift 术语中是非常小的数据量,我不确定任何进一步的优化是否会对您当前的流程速度产生很大影响。