【问题标题】:no more spool space in Database数据库中没有更多的假脱机空间
【发布时间】:2012-09-10 21:00:32
【问题描述】:

我正在使用 Teradata。在那我得到'数据库中没有更多的假脱机空间'。我的数据库利用率为 85%。 这个错误和数据库利用率之间有什么关系吗? 对此的任何研究都会对我解决这个问题更有帮助。 与我分享您的想法以避免这种情况。

【问题讨论】:

  • 通过简化你的 sql 来避免它。您还可以要求您的 teradata 管理员授予您更多的假脱机空间。
  • 假脱机空间是一种共享资源,在配置文件或用户级别对用户进行了限制。此外,给定用户的假脱机空间在所有活动会话之间共享。引起我注意的一件事是您指出数据库利用率为 85%。您能否澄清这 85% 的原因。这是整个系统上 85% 的可用 perm 空间还是只是一个特定的数据库? Bob Duell 很好地解释了从哪里开始查找报告假脱机空间不足的特定查询的问题。

标签: database teradata


【解决方案1】:

Spool space 问题发生在您的查询效率低下或在您使用的表上没有正确收集statistics 时。主索引选择不当(高偏差)的表也可能发生这种情况。假脱机是您用于连接到 Teradata 环境的用户帐户的属性;它实际上并不是数据库本身的属性。

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

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

如果有一个特定的查询给你一个“假脱机”错误,用完整的查询文本更新这个问题。

【讨论】:

  • 谢谢大家。@Rob paller 85% 是我的数据库中可用的已用 perm 空间,而不是整个系统。
  • Bob Duell--我已经在我的桌子上收集了统计数据。但我不知道这到底会做什么?你能解释一下吗?我如何用“解释”检查查询性能?
【解决方案2】:

我无法通过上述方法解决“假脱机”错误。我通过将 rank 函数移动到它自己的小表中解决了这个错误,没有任何连接或无关的列。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      最终,您可能会创建太低的假脱机空间。

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

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

      【讨论】:

      • 当然可以,但是 OP 可能是最终用户,他不能修改他的线轴,只有 DBA 可以:-)
      猜你喜欢
      • 2021-09-07
      • 2020-04-26
      • 2019-09-12
      • 2020-04-26
      • 2017-04-01
      • 2018-07-16
      • 2018-08-22
      • 2018-06-30
      • 1970-01-01
      相关资源
      最近更新 更多