Redshift-使用排序键会使表格大小增加一倍吗?

问题描述

因此,我试图优化某些表,但奇怪的是,我发现一个表之前从未定义过任何排序键,表大小(以MB为单位的块)为720。当我尝试定义排序时键或复合排序键,表大小从字面上翻倍至1440。我曾尝试与其他分发样式配合使用,但这并不会改变表大小。我还运行了“分析压缩”,但没有任何改进。

那么在这种情况下我该怎么办?我需要表具有排序键,因为它们在很多联接中使用,但是表大小加倍并不理想。我尝试针对这个特定问题进行谷歌搜索,但是似乎没有任何问题

编辑:我不尝试在现有表上实现此功能,而是像当前表一样创建了一个新表,然后插入了所有数据。而且可以肯定的是,我在新表上运行了统计数据并进行了清理。

解决方法

您的表大小由最小表大小确定。有关更多信息,请参阅此支持文档:Why does a table in my Amazon Redshift cluster consume more disk storage space than expected?

对于使用KEY或EVEN分发样式创建的表: 最小表格大小= block_size (1 MB) * (number_of_user_columns + 3 system columns) * number_of_populated_slices * number_of_table_segments

具有排序键时,最小表大小会增加,因为Redshift为要添加到表中的新未排序数据分配了额外的空间。

如果Amazon Redshift表具有排序键,则该表具有两个段-一个排序段和一个未排序段。如果Amazon Redshift表没有排序键,则所有数据均未排序,因此该表具有一个未排序的段。

使用排序键将数据添加到现有表中时,新数据将保留在包含未排序数据的单独段中-直到执行VACUUM操作后,数据才会插入到原始排序键段中。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...