Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 为什么红移和S3之间的AWS文件大小不同?_Amazon Web Services_Amazon S3_Amazon Redshift_Filesize - Fatal编程技术网

Amazon web services 为什么红移和S3之间的AWS文件大小不同?

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数据块”有关。这与它在文件系统中的保存方式有关,是吗

我正在将表从Redshift卸载到S3进行备份。因此,如果我们再次需要这些文件,我会检查这些文件是否完整

我刚刚在一张尺寸为1056的桌子上卸货,根据:

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个块,因为列将在所有切片上进行分区


您可以看到每列在中使用的块数。

。谢谢