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
。
通过执行以下查询进行调查后,我发现我有 941 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][