AWS Redshift数据类型空间分配

问题描述 投票:1回答:2

我打算创建id CHARACTER VARYING(100)ENCODE ZSTD,id2 CHARACTER VARYING(5000)ENCODE ZSTD。

现在我的id和id1大约只有20个字符。

在AWS Redshift中,空间分配是根据实际数据大小(即20)进行的,还是先根据定义的大小(分别为100和5000)进行分配。如果是这样,性能如何影响这些情况。

谢谢TOM

amazon-web-services types amazon-redshift block space
2个回答
1
投票

这里有两件事。

存储:对于varchars,消耗的空间量基于实际所需的空间量,而不是声明的长度(以字节为单位)。

查询性能:Redshift事先不知道保存varchar需要多少字节。它根据为varchar声明的长度分配字节数。它会导致查询占用更多内存,在某些情况下会导致查询溢出到磁盘。这会对真空性能产生特别不利的影响。

摘要:声明varchars尽可能短。所以,在你的情况下,如果它是20左右,也许25-30将是一个很好的长度。


2
投票

Amazon Redshift使用Compression Encoding存储数据,因此分配最小空间并不重要。

通过COPY命令加载数据时,通常最好允许Redshift选择压缩类型,而不是自己指定。这将导致选择最有效的方法,基于加载的前100,000行。

© www.soinside.com 2019 - 2024. All rights reserved.