【问题标题】:Could not allocate a new page for database ‘TEMPDB’ because of insufficient disk space in filegroup ‘DEFAULT’由于文件组“DEFAULT”中的磁盘空间不足,无法为数据库“TEMPDB”分配新页面
【发布时间】:2016-11-18 05:34:35
【问题描述】:

ETL 开发人员报告说,他们一直在尝试始终如一地在 ADW 上运行我们的每周和每日流程。虽然在大多数情况下它们无一例外地执行,但我现在收到此错误:

“由于文件组‘DEFAULT’中的磁盘空间不足,无法为数据库‘TEMPDB’分配新页面。通过删除文件组中的对象、向文件组中添加其他文件或为文件组中的现有文件设置自动增长来创建必要的空间。”

与 DWU 设置相关的 TEMPDB 空间是否有限制?

数据库限制为 100TB(每个门户)且未满。

【问题讨论】:

    标签: azure-sqldw


    【解决方案1】:

    Azure SQL 数据仓库确实为 tempdb 分配空间,每 100 个 DWU 大约 399 GB。参考here

    您目前使用的是什么 DWU?考虑暂时提高您的 DWU aka 服务目标或重构您的工作以减少对 tempdb 的依赖。批处理完成后降低它。

    还可能值得检查您的工作负载是否存在笛卡尔积、过度排序、对临时表的过度依赖等问题,看看是否可以进行任何优化。

    【讨论】:

    • 我已经将 DWU 撞了两次,没有任何影响。开发人员说查询已经运行了一段时间(但我只能相信是这样)。该查询正在尝试对涉及不等式条件的表进行自联接。我认为问题的根源是查询中的不良/错误逻辑,因为表的粒度与我对此类用例的预期不符。
    【解决方案2】:

    查看代码的解释计划,看看是否有比预期多得多的数据移动。如果您发现一个查询确实更多地移动到 Q 表中,您可以调整它以避免数据移动(这可能意味着重新设计表以分布在不同的键中)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-03
      • 2018-01-17
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多