对 SQL Server 数据库磁盘驱动器进行碎片整理
本文提供有关 SQL Server 数据库驱动器碎片整理的一些指导。
原始产品版本:SQL Server
原始 KB 数: 3195161
是否应在操作系统层对 SQL Server 磁盘进行碎片整理?
这取决于当前驱动器的碎片状态。 通常,它不会造成伤害,并且可能会有所帮助,前提是遵循在对 SQL Server 数据库驱动器分区进行碎片整理时“预防措施”中所述的预防措施。 唯一的负数是必须关闭 SQL Server ,除非碎片整理工具支持事务数据功能。 好消息是,运行碎片整理后,你不必再次执行此操作,除非有许多自动增长和其他文件在磁盘上和磁盘上移动。 请确保了解实用工具使用的任何写入缓存策略。 此类实用工具的缓存可能涉及非电池支持的缓存,这可能违反 WAL 协议要求。
详细信息
磁盘碎片整理程序将所有文件(包括数据库文件)移到硬盘上的连续群集中。 这会优化和加快文件访问速度。 除了 Windows NT 操作系统,如果不对硬盘进行碎片整理,操作系统可能必须转到磁盘上的多个物理位置来检索数据库文件,从而使文件访问速度变慢。
由于物理数据访问是 I/O 请求中最昂贵的部分,因此碎片整理可以为 SQL Server 和其他应用程序提供性能提升。 将相关的数据区块彼此贴近,减少了 I/O 操作要求。
目前市场上提供了各种碎片整理实用程序。 某些实用工具在打开的文件上启用碎片整理,而其他实用工具则要求关闭文件碎片整理,或者在关闭的文件条件下使用时性能更好。 此外,某些实用工具具有事务性功能,而其他实用工具则没有。
对 SQL Server 数据库驱动器进行碎片整理时的预防措施
评估用于 SQL Server 的碎片整理实用工具时,请确保该实用工具提供事务数据功能。 具体而言,请选择提供以下事务数据功能的碎片整理实用工具:
在成功建立新扇区并成功复制数据之前,不会考虑移动原始扇区。
该实用工具以安全的方式防止系统故障(如停电),使文件在逻辑上和物理上保持不变。 为了保证数据完整性,强烈建议在基于 SQL Server 的文件上运行碎片整理实用工具时执行拉取即插即用测试。
预写日志记录(WAL)协议需要防止扇区重写以避免数据丢失。 只要文件执行任何数据移动,该实用工具必须保持文件的物理完整性。 该实用工具应以事务方式处理扇区边界,以保持 SQL Server 文件不变。
该实用工具应提供适当的锁定机制,以确保文件保留一致的映像以供任何修改。 例如,当原始扇区复制到新位置时,该实用工具应确保无法修改原始扇区。 如果允许修改,碎片整理实用工具可能会丢失写入。
除非已关闭使用使用要重整的磁盘的 SQL Server 实例,否则不应使用未提供这些事务数据功能的关键磁盘碎片整理程序,以免对打开的数据库文件进行碎片整理。
Open-file defragmentation 引发一些可能的问题,即关闭文件碎片整理通常不会:
开放文件碎片整理会影响性能。 碎片整理实用工具可能会锁定文件的各个部分,从而阻止 SQL Server 完成读取或写入操作。 这可能会影响运行 SQL Server 的服务器的并发性。 请联系碎片整理工具的制造商,了解如何锁定文件,以及这如何影响 SQL Server 并发。
开放文件碎片整理可能会影响写入缓存和排序。 基于打开文件的实用工具需要 I/O 路径组件;这些组件不得更改写入操作的排序或预期性质。 如果写通或 WAL 协议租户损坏,则数据库可能会损坏。 数据库和所有关联的文件被视为单个实体。 (许多Microsoft知识库文章、SQL Server 联机丛书和各种白皮书都对此进行了介绍。所有写入都必须保留原始写入顺序序列和写通功能。
建议
- 在创建新数据库或将现有数据库移动到卷之前,请对 NTFS 卷进行碎片整理,除非已设置格式。
- 请确保在首次创建数据库时适当规划和调整 SQL 数据和日志文件的大小。
- 如果使用自动增长,请创建预 SQL Server 2014 事务日志。
- 对事务日志所在的磁盘或磁盘进行碎片整理。 这会阻止事务日志的外部文件碎片。 如果文件具有大量自动增长,或者不是包含许多数据库、日志或其他已修改文件的专用磁盘,则可能会出现此问题。 在这种情况下,文件(包括事务日志文件)可以交错和碎片化。
- 如果要对群集磁盘的数据库驱动器进行碎片整理,则应将群集磁盘设置为暂停运行状况监视(也称为 维护模式)。
- 若要最大程度地减少碎片,请不要收缩数据库文件。 此外,请手动增加它们的大小,以最大程度地减少增长活动。
- 将数据库文件保留在专用磁盘上。
- 在对包含 SQL Server 数据库和备份文件的位置进行碎片整理之前执行完整备份。