【问题标题】:SQL Server index rebuild consumes all disk spaceSQL Server 索引重建占用所有磁盘空间
【发布时间】:2023-01-04 07:02:29
【问题描述】:

我试图解决的问题是索引重建不断消耗整个磁盘空间(然后操作失败)。

正在使用的命令是(同时遍历数据库中的所有表):

ALTER INDEX ALL ON MyTable REBUILD
  • SQL 服务器 2014
  • 总磁盘空间为 465 GB
  • 数据库大小约为 320GB

在索引重建期间,磁盘被完全填满。并且当操作失败时,空间不会被释放。这意味着磁盘上没有剩余空间 -根本.

关于可以做什么不同的任何建议?

谢谢你。

【问题讨论】:

  • 你的数据库恢复模式是什么?
  • 恢复模式很简单

标签: sql sql-server tsql


【解决方案1】:

关于可以做什么不同的任何建议?

  1. 不要重建所有索引。你为什么要那样做?尝试只更新统计信息。

  2. 一个接一个地重建索引。

  3. 如果单个索引太大而无法重建,可以考虑先禁用它,这就像删除索引但保留索引定义一样。但是警告,禁用主键索引(或外键引用的唯一索引)或聚集索引会产生副作用。其他表上的外键将被禁用 (NOCKECK),如果聚集索引被禁用,表上的所有其他索引也将被禁用。

    并且当操作失败时,空间不会被释放。

    当数据库设置为自动增长时,它会增长。数据库没有“自动收缩”设置。要在实时操作后回收分配给数据库的空间,您可以shrink it

【讨论】:

    【解决方案2】:

    如果您出于某种原因绝对必须重建所有索引,那么请获得足够的驱动器空间来进行重建,并留有余地。 不要不断收缩(例如,作为维护计划的一部分). 当您别无选择时,在罕见/紧急情况下收缩是可以的,但具有讽刺意味的是,这可能会使您试图重建的索引碎片化。

    【讨论】:

      猜你喜欢
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 2011-04-30
      • 2016-05-10
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      相关资源
      最近更新 更多