Amazon web services 为什么红移和S3之间的AWS文件大小不同?
我正在将表从Redshift卸载到S3进行备份。因此,如果我们再次需要这些文件,我会检查这些文件是否完整 我刚刚在一张尺寸为1056的桌子上卸货,根据:Amazon web services 为什么红移和S3之间的AWS文件大小不同?,amazon-web-services,amazon-s3,amazon-redshift,filesize,Amazon Web Services,Amazon S3,Amazon Redshift,Filesize,我正在将表从Redshift卸载到S3进行备份。因此,如果我们再次需要这些文件,我会检查这些文件是否完整 我刚刚在一张尺寸为1056的桌子上卸货,根据: select "table", size, tbl_rows FROM svv_table_info; 根据文档,大小为“1 MB数据块”,因此此表使用1056 MB。但复制到S3后,文件大小为154MB(在AWS控制台中查看) 我复制回了Redshift,所有的行都在那里,所以这与“1MB数据块”有关。这与它在文件系统中的保存方式有关,是吗
select "table", size, tbl_rows
FROM svv_table_info;
根据文档,大小为“1 MB数据块”,因此此表使用1056 MB。但复制到S3后,文件大小为154MB(在AWS控制台中查看)
我复制回了Redshift,所有的行都在那里,所以这与“1MB数据块”有关。这与它在文件系统中的保存方式有关,是吗
有人能解释一下吗?多谢各位 那么您是在问为什么
SVV_TABLE_INFO
视图声称该表消耗了1GB,但当您将其转储到磁盘时,结果只有154MB
有两个主要原因。首先,您正在积极地更新表,但没有清理它。当一行被更新或删除时,红移实际上会附加一个新行(是的,存储为列),并删除旧行。要回收这个空间,你必须。虽然红移会在背景中进行一些吸尘,但这可能还不够,或者它可能在您查看时没有发生
第二个原因是存储表数据需要开销。表中的每一列都存储为1 MB块的列表,每个块一个块(每个节点多个块)。根据集群的大小和列数据类型,这可能会导致大量空间浪费
例如,如果要存储32位整数,一个1MB块可以存储256000个这样的整数,总共需要4个块来存储1000000个值(这可能接近表中的行数)。但是,如果您有一个4节点集群,每个节点有2个切片(即,dc2.large
),那么实际上需要8个块,因为列将在所有切片上进行分区
您可以看到每列在中使用的块数。。谢谢