AWS Redshift内copy和unload操作如何提高性能和效率

Unload:

1. Redshift中没有明确写明性能控制,但是使用Parquet文件格式,会比使用CSV格式等文本文件,卸载速度提高2倍[1].

2. 建议在unload select语句中,select query加上order by. 这个操作会让数据在后续重新加载的时候提升速度。

3. 默认情况下,UNLOAD 为每个切片写入一个或多个文件,旨在使用并行处理。我也测试了 parallel参数,在我的测试中,加了parallel off的unload语句明显会比不加parallel off要慢。

4. 如果不指定maxfilesize, 那么默认最大文件大小为6.2G. maxfilesize参数范围是5M到6.2G,如果这个值设置较小的话,会明显减慢unload的执行速度。

Copy:

1. 需要注意的是,根据文档[2], 从单个文件加载数据会迫使 Redshift 执行串行化加载,这比并行加载慢得多。如果您使用多个并发 COPY 命令从多个文件加载一个表,系统会强制 Amazon Redshift 执行序列化加载。

因此,如果我们需要将多个文件加载到单个表,我们应该使用单个COPY命令来执行表,而不是使用多个COPY命令并行执行。Redshift Copy本就自动并行化摄取数据,单个COPY命令已经可以将数据批量加载到表中。

2. 根据Best Practice, 为保证集群资源的最佳使用,Copy 加载的数据文件应该被放置到多个大小均匀的文件中。 在分割数据文件时,请确保它们的大小基本相等——压缩后应在1 MB 到1 GB 之间。[3]

同时,文件的数量最好是集群中分片的倍数,这样可以保证每个compute节点均执行Copy操作。[3]

3. 根据文档[3], 强烈建议使用 gzip 、 lzop 或 bzip2 对加载文件进行单独压缩,以有效地加载大型数据集。

参考文档:
[1] https://docs.amazonaws.cn/redshift/latest/dg/r_UNLOAD.html 
[2] https://docs.aws.amazon.com/zh_cn/redshift/latest/dg/c_best-practices-single-copy-command.html 
[3] https://aws.amazon.com/cn/blogs/china/top-8-best-practices-for-high-performance-etl-processing-using-amazon-redshift/ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值