Redshift Querying: error xx000 disk full redshift

Posted

技术标签:

【中文标题】Redshift Querying: error xx000 disk full redshift【英文标题】: 【发布时间】:2017-03-13 11:30:26 【问题描述】:

我执行了以下查询

select employee_name, max(employee_dept) as dept
from employeeDB 
where employee_name is not null and employee_name != ''
group by employee_name
order by employee_name asc
limit 1000

并收到错误ERROR: XX000: Disk Full

通过执行以下查询进行调查后,我发现我有 94​​1 GB 可用空间和 5000 GB 已用空间。

select
  sum(capacity)/1024 as capacity_gbytes, 
  sum(used)/1024 as used_gbytes, 
  (sum(capacity) - sum(used))/1024 as free_gbytes 
from 
  stv_partitions where part_begin=0;

任何人都可以建议如何缓解这一挑战,以便我能够获得预期的结果吗?

【问题讨论】:

您的employeeDB 表有多大?您可以从 svv_table_info 检查表大小。您在上述列中使用的压缩编码是什么?我的假设是,它必须与压缩有关。您的数据不适合未压缩的磁盘。 【参考方案1】:

可用磁盘空间对于 Redshift 上的查询执行很重要。这就是为什么 VACUUM 过程很重要并且应该定期执行的原因,尤其是对于经常发生删除的表。

您最近是否清理过您的桌子?

查看 VACUUM documentation 并查看 *** 上的 Amazon Redshift at 100% disk usage due to VACUUM query 问题。

【讨论】:

【参考方案2】:
+-------+              +-------+
|-------|              |-------|
||10 kb||              ||25 kb||
+-------+              +-------+
|xxxxxxx|              |xxxxxxx|
|xxxxxxx|              |xxxxxxx|
|xxxxxxx+------------->+xxxxxxx|
+-------+              |xxxxxxx|
||10 kb||              |xxxxxxx|
+-------+              |xxxxxxx|
|xxxxxxx|              |xxxxxxx|
|xxxxxxx|              |xxxxxxx|
+-------+              |xxxxxxx|
||05 kb||              |xxxxxxx|
+-------+              +-------+

请看上面的表示。让我们假设xxxxxxx 代表磁盘上的已占用空间,而数字代表可用的空白空间。

两种方案都代表 25 kb 的空置空间。但在案例 1 中,如果您必须插入(或执行操作)需要连续分配内存的操作,例如 15 kb,您将无法执行此操作。虽然有 25 kb 的空间可用,但由于这不是连续的,您可能会得到一个 Memory / Disk Full Error,因此该空间将被浪费或分配给内存需求非常低的任务。

案例 2 中,有一块连续的内存可用。可以轻松执行需要~25kb 内存的任务,

这不仅适用于 Redshift 或 DBMS;它适用于任何远程涉及内存管理的东西,包括操作系统。

是什么导致了这种内存分区(称为碎片化)?

碎片是由磁盘上不断创建和删除(修改)文件引起的。当占用空间的文件被删除时,它会在那里创建一个巨大的内存孔。小于内存孔大小的文件可能会占用该空间,否则空间将被浪费。

应该怎么做?

碎片整理!在您的具体情况下,Amazon Redshift 向VACUUM 表和/或架构提供预置。您可能有足够的磁盘空间,但没有足够的连续内存,引擎无法分配给您执行的任务。

【讨论】:

我只是在查询数据,稍后我会将结果导出为 csv。你能建议如何解决这个问题,以便我可以有效地查询数据吗? @Enthusiast:只需尝试在另一台机器上执行上述查询,最好具有比您当前使用的更好的配置。 @Enthusiast:如果上面的答案正是您要找的,请将上面的答案标记为已接受。如果不完全是,但以某种方式帮助了你,请投赞成票。这样,它就不会丢失,并且可以帮助遇到类似问题的人。

以上是关于Redshift Querying: error xx000 disk full redshift的主要内容,如果未能解决你的问题,请参考以下文章

搭建Mybatis 出现 Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statement

Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection doe

### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException

Error querying database. Cause: org.apache.ibatis.builder.IncompleteElementException: Could not find

mybatis 数组array参数报错org.apache.ibatis.exceptions.PersistenceException: ### Error querying dat

Error querying database. Cause: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][