数据库中不再有假脱机空间

时间:2012-09-18 15:02:20

标签: database teradata

我正在使用Teradata。在那里我得到'数据库中没有更多的虚拟空间'。我的数据库利用率为85%。 此错误与数据库利用率之间是否存在任何关系? 任何有关这方面的研究都会对我解决这个问题更有帮助。 请与我分享您的想法以避免这种情况。

4 个答案:

答案 0 :(得分:7)

如果您的查询效率低下或者您正在使用的表上未正确收集Spool space,则会出现

statistics个问题。在主要索引选择不当(高偏斜)的表中也会发生这种情况。假脱机是用于连接到Teradata环境的用户帐户的属性;它实际上并不是数据库本身的属性。

唯一明确的方法是查看查询的EXPLAIN计划。

如果您的查询效率低下,请重写它。如果需要收集统计数据或者需要更改索引,请联系负责您正在使用的表的DBA。

如果有特定查询导致您出现“out of spool”错误,请使用查询的完整文本更新此问题。

答案 1 :(得分:1)

我无法通过上述方法解决我的“out of spool”错误。我通过将rank函数移动到它自己的小表中而没有任何连接或无关列来解决错误。

答案 2 :(得分:1)

当您使用具有大数据的表时,可能会出现假脱机空间。如果使用多个表,请检查是否使用别名而不是引用完整表。实际上,使用别名可以通过联接来缩小数据范围。另请参阅是否正在使用像oreplace之类的会消耗更多数据的函数。在这种情况下,请尝试使用正则表达式。

答案 3 :(得分:0)

最终,您可能创建的线轴空间太小。

您需要在 MODIFY PROFILE 或 MODIFY USER 语句中为 SPOOL 指定一个新值,具体取决于定义用户线轴的位置。语法是:

MODIFY [PROFILE profile_name | USER user_name ] AS SPOOL = 100000000 bytes ;