首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何知道何时是整理我的SQLServer数据库的时候?

问我如何知道何时是整理我的SQLServer数据库的时候?
EN

Server Fault用户
提问于 2009-05-14 15:22:55
回答 1查看 1.2K关注 0票数 9

衡量SQLServer数据库碎片/性能滚出和确定何时整理SQLServer数据库表的最佳实践是什么?

我最感兴趣的是了解什么是有用的指标,以及什么级别的性能下降应该触发碎片整理。

EN

回答 1

Server Fault用户

回答已采纳

发布于 2009-05-14 16:32:10

我相信这方面肯定会有一些有趣的答案,因为人们对应该看什么度量标准有很多不同意见。我编写了designed、SHOWCONTIG,并为2005年设计了它们的替代品,并编写了联机丛书内容,因此我将给出我的看法,并解释我所选择的2005年联机丛书和维护计划向导中的数字。

用于索引碎片的两个最佳指标是: 1) (2005)按百分比计算的平均碎片/ (2000)逻辑扫描碎片2) (2005)每页平均页密度/ (2000)平均字节

这些方法同样适用于聚集索引和非聚集索引。

1是测量有多大的逻辑分裂。这是指索引的叶级页的逻辑顺序与物理顺序不匹配时。这将防止存储引擎在范围扫描期间执行有效的readahead操作。因此#1影响范围扫描性能,而不是单点查找性能。

2是测量每页在索引的叶级上浪费了多少空间。浪费空间意味着要使用更多的页面来存储记录,这意味着存储索引的磁盘空间更多,读取索引的IOs更多,在缓冲池中存储内存的内存更多。

阈值?我的经验法则是不超过10%的碎裂,什么也不做。10%-30%,做一个改变指数.重组(2005年)/ DBCC INDEXDEFRAG (2000年)。超过30%,做一个改变指数..。重建(2005年)/ DBCC DBREINDEX (2000年)。这些都是完全的概括,您的阈值也会有所不同。

若要找到阈值,请针对碎片级别跟踪工作负载性能,并确定性能下降过大的时间。在这一点上,您需要解决碎片问题。有一个平衡的行动,在生活与分裂和承受资源打击,以消除它。

在这里,我没有提到移除碎片的两种方法之间的权衡,比如FILLFACTOR/PADINDEX试图减轻碎片,减少碎片整理,改变模式/访问模式以减轻碎片,或者不同类型的维护计划。

哦,顺便说一句,我总是建议不要在不足1000页的索引中烦扰碎片问题。这是因为索引可能大部分是内存常驻的(因为人们要求一个数字,而我不得不想出一个数字)。

您可以在我的TechNet杂志关于http://technet.microsoft.com/en-us/magazine/cc671165.aspx数据库维护的文章、我在http://technet.microsoft.com/en-us/library/cc966523.aspx帮助编写的基于2000年的索引碎片整理最佳实践白皮书中以及在http://www.sqlskills.com/BLOGS/PAUL/category/Fragmentation.aspx分片类别下的博客中阅读更多有关这方面的内容。

我想我回答得有点过头了,但这是我的热门话题之一。希望这会有所帮助:)

票数 22
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/8234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档