Amazon redshift AmazonRedshift是否会自动清理查询溢出到磁盘时创建的临时表和工作表的磁盘空间?

Amazon redshift AmazonRedshift是否会自动清理查询溢出到磁盘时创建的临时表和工作表的磁盘空间?,amazon-redshift,Amazon Redshift,我最近开始了一项新工作,在db平台上使用红移。他们一直在努力解决磁盘空间问题,并注意到当他们重新启动服务器时,会回收大约20%的已用磁盘空间。然后,磁盘空间将开始稳步上升,直到整个磁盘基本上已满,它们必须重新启动 在SQL Server(我使用过的唯一其他数据库)中,当tempdb(包含溢出的临时表和工作表的数据库文件)意外扩展时,可能会发生这种行为。如果管理不当,这可能会填满整个磁盘,因为即使在查询完成时删除大量临时表,tempdb也不会自动收缩。但是当服务器重新启动时,tempdb将收缩到您

我最近开始了一项新工作,在db平台上使用红移。他们一直在努力解决磁盘空间问题,并注意到当他们重新启动服务器时,会回收大约20%的已用磁盘空间。然后,磁盘空间将开始稳步上升,直到整个磁盘基本上已满,它们必须重新启动

在SQL Server(我使用过的唯一其他数据库)中,当tempdb(包含溢出的临时表和工作表的数据库文件)意外扩展时,可能会发生这种行为。如果管理不当,这可能会填满整个磁盘,因为即使在查询完成时删除大量临时表,tempdb也不会自动收缩。但是当服务器重新启动时,tempdb将收缩到您为其设置的大小


所有这些都需要问,当工作负载包含大量大型临时表和磁盘溢出(我们绝对有)时,Redshift是否也会做类似的事情并为临时表保留磁盘空间?如果是的话,我怎么检查?如果没有,,还有什么可以解释在数据库重新启动时突然回收20%的磁盘空间?

很难说集群上发生了什么,但当Redshift在表上执行真空操作时,通常会看到磁盘空间被回收-Redshift和SQL Server之间的一大区别是对Redshift表进行了删除或更新结果是“软删除”未实际删除的行,因此继续占用磁盘空间,直到真空过程永久删除它们。最初这必须手动运行,但现在有一个自动真空功能。如果让我猜猜,可能只有在集群重新启动时,真空才会发生在某些表上?@NathanGriffiths感谢您提供的信息。我会调查的。即使在truncate上也会发生软删除吗?不,truncate会立即删除行,并且如果启用了自动真空,并且没有计划的真空过程在运行,并且红移实例处于持续的重载状态,则不需要真空,您可能会发现,auto vacuum无法跟上表中未清空的数据量,因为根据设计,它会在繁重的查询负载期间暂停(请参阅)。当集群启动时,不会有任何查询运行,因此可能会出现自动真空。