Windows 碎片整理工具如何导致 SQL Server 内部出现碎片?

Windows 碎片整理工具如何导致 SQL Server 内部出现碎片?

我刚才在读本文作者谈到了数据库文件增长可能导致的文件系统碎片。有一点我不太明白。

Windows 碎片整理工具怎么样?

尽管您可以使用 Windows 碎片整理工具对数据库文件进行碎片整理,但这些工具只会移动文件块以使它们连续。移动文件块可能会导致内部碎片,而您可能无法轻松解决此问题。

作者在这里是说磁盘碎片整理程序不会尝试将文件块按正确的顺序排列,还是我理解错了?如果他是这么说,那么这是所有磁盘碎片整理程序(甚至是商业程序)的局限性吗?

答案1

幸运的是,您可以通过重建索引或在堆表上建立和删除聚集索引来解决内部表范围碎片和页面碎片。

  1. 你不应该有堆
  2. 无论如何,您都应该定期重建索引。

为了解决表碎片问题,您通常必须在不同的文件组中重建表或聚集索引。

并非每个人都有备用的文件组。

[愤世嫉俗]

在我看来,使用“Kronos Workforce”是一种神奇的方式,可以完成 DBA 应该做的事情。我也遇到过同样的问题,供应商向我的管理层推销一些时髦(昂贵)的产品来执行标准的 DBA 任务

[/愤世嫉俗]

编辑:看来我误解了。Kronos 不是 DBA 工具。

然而,文章中的 FUD 可能是这些“调整”可以解释

  • 将最大并行度 (MAXDOP) 更改为 1
  • 将默认索引填充因子设置为 75%
  • 禁用自动更新统计信息设置

答案2

任何外部碎片工具(无论商业或免费)都不会重组文件的内部内容,这与 DBCC REINDEX 不同。

碎片整理后,整理后的文件将与原始文件逐位重复。因此,数据库中的任何漏洞仍然存在,您仍然需要不时重建索引以对抗内部碎片。

相关内容