在对驱动器进行碎片整理之前停止SQL Server服务?


8

我们生产的SQL Server 2005数据库的数据文件位于单独的物理驱动器上,Microsoft Windows 2003的“磁盘碎片整理程序”工具报告该驱动器碎片为99%。

我们计划在周六上午3:00进行任务以对该驱动器进行碎片整理。40分钟后作业完成,没有明显的错误。但是,驱动器仍然严重碎片化。

进行碎片整理之前,我们是否应该已停止SQL Server服务?

语境

根据上下文请求:我们拥有一个Microsoft SQL Server 2005实例(9.00.5324.00),该实例在2007年左右的Dell PowerEdge 2950硬件上运行32位Windows Server 2003(SP2),具有4GB RAM。PowerEdge 2950具有四个配置为RAID-1的68GB驱动器,用于创建两个68GB虚拟磁盘:(1)C(引导和操作系统)和D(页面文件,其他各种数据);(2)E(SQL数据)。据我所知,IT人员从未对任何这些驱动器进行碎片整理...磁盘碎片整理程序报告文件碎片率分别为66%(C),77%(D)和99%(E)。性能监视器报告以下平均结果:“分页文件:使用百分比” = 〜6.8%;“ SQL Server:缓冲区管理器-页面预期寿命” = 20秒;和“ PhysicalDisk:平均磁盘秒/写入,驱动器E” = 300到1之间。我们需要在几个月内完成急需的硬件和SQL Server升级(即,新硬件,64位Windows Server 2012、64位SQL Server 2012、12GB RAM),但由于用户性能,要尽可能减轻问题。因此,考虑对文件进行碎片整理可能对驱动器E(主SQL数据驱动器)有所帮助。

顺便说一句,上周我们拉出了两个故障驱动器并重建了阵列...不确定这很重要。我们与另一个IT团队签约以维护服务器,因此我们无法直接访问设备...我们的组织只是为服务付费。

我们可以在定期安排的维护时段(每周)中提供停机时间,也可以在必要时在夜间进行带外停机。


6
您是否有任何衡量指标表明物理磁盘碎片正在产生重大影响?您可以承受停机时间吗?
Remus Rusanu 2013年

2
@RemusRusanu-如何知道某个给定的碎片级别是否对系统造成负面的总体影响,而无需实际对其进行碎片整理?通过Performance Monitor检查拆分I / O的数量可能会有所帮助,尽管很难将其与SQL Server中的活动相关联。顺便说一下,这并不意味着对抗-我真的很好奇!
Max Vernon

4
@MaxVernon:从理论上来说,我猜XPerf。还可以通过在同一磁盘上创建未碎片整理的数据库并运行捕获的工作负载来并行衡量。然而,出于所有实际原因,应用中普遍存在的性能问题与由于碎片而引起的性能问题的可能性是巨大的。
Remus Rusanu 2013年

3
我的经验告诉我,我有100次(或100次以上)中有99次是肯定的。性能问题更有可能是由于某些ORM SELECT *到处都在执行,或者是其他一些不当行为造成的。
Max Vernon

1
在进行任何其他更改之前,一定要在尝试进行碎片整理之前,一定要确保已完全重建阵列。对于您的新系统,有一条建议-尽可能获得尽可能多的RAM-由于RAM的速度比最快的磁盘快1,000倍,因此您希望在内存中拥有尽可能多的常规访问的SQL数据。
Max Vernon

Answers:


2

我个人已经使用Raxco PerfectDisk(与公司或其任何员工无关)以在线方式对SQL Server LUN进行碎片整理。完美运行,如果确实会使服务器速度变慢。我建议在活动较少的时候这样做。当我说“完美工作”时,是指它不会破坏卷或SQL数据文件。

如果驱动器上的某些结构碎片化,则内置碎片整理程序的性能会很差。PerfectDisk向您显示有关所有零散项目的详细信息,包括NTFS分配表,目录,备用文件流等。

PerfectDisk是否对SQL数据库进行碎片整理? http://support.raxco.com/KB/a106/does-perfectdisk-defragment-sql-databases.aspx

请参阅有关SQL Server和碎片的Technet新闻杂志的此存档副本:http ://web.archive.org/web/20100803204458/http: //www.microsoft.com/technet/abouttn/flash/tips/tips_083104.mspx


2
但是Remus的评论不仅有指向某些产品的优点,还有很多优点。我不相信我曾经对SQL所在的Windows磁盘进行过碎片整理,也从未见过需要这样做的明显迹象。Windows可能会说一个驱动器是零散的,但是重要的是SQL Server是否因此而遇到任何问题。在很多情况下,我怀疑这确实没有关系,根本不需要运行文件系统级碎片整理。您说它“完美运行”,但您实际上观察到了可衡量的改进吗?你能提供细节吗?
亚伦·伯特兰

1
我同意,Aaron,在大多数情况下,如果对本来经过适当设计的SQL Server进行物理碎片处理,其影响将很小。即使在这种情况下,用户报告的碎片为99%。但是,如果用户将其SQL数据库与O / S放在同一LUN上,而恰好位于单个磁盘或具有少量主轴的RAID阵列上,则实际上过多的碎片会产生影响。
Max Vernon

1
我说的“真的过分”是成千上万的片段。想成千上万。我看到了 并不是说我感到骄傲或什么!
Max Vernon

正如布伦特·奥扎尔(Brent Ozar)所说,如果您在一个大型RAID阵列上共享数据的SAN上运行SQL数据库,则进行物理碎片整理(实际上是逻辑SQL碎片整理)可能不会对整体产生任何可衡量的积极影响。系统的性能。
Max Vernon

我将其标记为当前的最佳答案,因为如果使用正确的工具,它似乎是“是”。谢谢!
iokevins

7

您的问题不是磁盘碎片。您的问题是RAM和应用程序表扫描:

4GB RAM ... 68GB ...页面预期寿命20秒

你需要的方式更多的内存。如在您的新服务器中,方式应该大于12GB。从64 GB开始,它的价格基本上是一角。是的,修复您的应用程序以使用索引。20秒非常清楚地表明表扫描浪费了缓冲池。您需要修复应用程序,添加所需的索引并修复查询。对于您的情况,对驱动器进行碎片整理就像是红色鲱鱼一样。

哦,请移动日志以将物理主轴与data分开。单独。


谢谢雷木思;如果仅是我统治了整个世界。...很遗憾,我们与该应用程序的第三方供应商签订了合同,因此不在我们的直接控制之下。非常感谢您的见解,谢谢。
iokevins

1
更多的RAM和SSD可以以较小的预算缓解您的出路。但是该应用程序需要修复。
Remus Rusanu

作为后续措施,对驱动器进行碎片整理后,性能仅得到了少量改善。Remus在诊断RAM问题时似乎是正确的。
iokevins

@RemusRusanu尝试对放置在虚拟服务器(vmware)中不同磁盘中的文件进行优化是否重要?这是一个普遍的虚拟化无知问题...
diegohb 2014年

-4

Brad McGehee在这里很好地描述了它:

http://www.bradmcgehee.com/2011/06/do-you-ever-physically-defragment-your-sql-server-mdf-ldf-files/

...如果在碎片整理期间使SQL Server服务保持运行状态,则数据库文件将打开,因此完全不会进行碎片整理。


2
绝对不正确。至少在Windows的最新版本上。作为Windows Server 2003+或Windows XP +
最大弗农

1
所有Windows Defrag工具都使用系统API来对文件进行碎片整理,并在文件访问API下方的群集级别上对其进行碎片整理。这是可以使用在线卷对文件夹进行碎片整理的方法。
Max Vernon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.