sql-server – 如何判断何时对SQLServer数据库进行碎片整理?
测量SQLServer数据库碎片/性能滚降以及确定何时对SQLServer数据库表进行碎片整理的最佳实践是什么?
我最感兴趣的是了解有用的指标是什么以及性能降级的程度应该触发碎片整理. 解决方法我相信会有一些有趣的答案,因为对于要查看的指标存在很多分歧.我写了DBCC INDEXDEFRAG,SHOWCONTIG并设计了他们2005年的替代品,并编写了在线书籍内容,所以我会给你我的观点,并解释在线书籍和我选择的2005年维护计划向导中的数字.要查看索引碎片的两个最佳指标是: 这些同样适用于聚簇索引和非聚簇索引. 1是衡量有多少逻辑碎片.这是当索引的叶级别的页面的逻辑顺序与物理顺序不匹配时.这可以防止存储引擎在范围扫描期间执行有效的预读.因此#1影响范围扫描性能,而不影响单例查找性能. 2是在索引的叶级别上测量每页上浪费的空间.浪费的空间意味着您使用更多页面来存储记录,这意味着存储索引的磁盘空间更多,读取索引的IO更多,以及将页面保存在缓冲池内存中的内存更多. 阈值?我的一般经验法则是碎片不到10%,什么都不做. 10-30%,做一个ALTER INDEX … REORGANIZE(2005)/ DBCC INDEXDEFRAG(2000).超过30%,做一个ALTER INDEX … REBUILD(2005)/ DBCC DBREINDEX(2000).这些是完整的概括,您的阈值会有所不同. 要查找阈值,请根据碎片级别跟踪工作负载性能,并确定性能下降过多的时间.那时你需要解决碎片问题.生活与碎片之间存在平衡,并采取消除它的资源. 我没有在这里谈到两种删除碎片的方法之间的权衡,例如FILLFACTOR / PADINDEX以尝试减少碎片并减少碎片整理,更改模式/访问模式以减少碎片,或者不同类型的维护计划. 哦,顺便说一句,我总是建议不要打扰少于1000页的索引中的碎片.这是因为索引可能主要是内存驻留(因为人们要求一个数字,我不得不想出一个). 您可以在我的TechNet杂志上有关数据库维护的文章中阅读更多相关内容,参见基于2000的关于我在http://technet.microsoft.com/en-us/library/cc966523.aspx帮助编写的索引碎片整理最佳实践的白皮书,以及我在http://www.sqlskills.com/BLOGS/PAUL/category/Fragmentation.aspx碎片类别下的博客. 我觉得我有点过分回答了,但这是我的热门按钮之一.希望这可以帮助 :-) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Mysql 5.7 忘记root密码或重置密码的详细方法
- SQL(DB2)在单个查询中返回多个条件计数
- SQL Server数字开头的数据库表名的解决方法
- sql-server – SQL Server 2000 – ALTER TABLE
- 获取SQLServer的最完整数据字典的SQL语句
- SqlServer 还原他服数据库只建立发布却删除不了
- 隆重推荐【SQLServer】127个SQL server热门资料汇
- SQLserver 实现分组统计查询(按月、小时分组)
- sql-server – 与BitConverter.ToInt64值不同的S
- sql-server – T-SQL:什么是NOT(1 = NULL)?