Mic*_*ael 3 sql-server clustered-index heap fragmentation
作为一名 SQL Server DBA,我有定期重建/重组索引的维护工作。最近,我问自己 SQL Server 中的表碎片问题。然后我阅读了有关堆表及其碎片的文章。我们不断以各种方式检查 SQL 服务器的状态,我想知道添加对表碎片的检查是否有用。
我正在考虑开发类似的东西:“它们是集群索引吗?” 是 -> 什么都不做,不 -> 所以检查:
percentage of fragmentation > x%
numbers of forward pointing > x
numbers of rows > x
Run Code Online (Sandbox Code Playgroud)
如果 x > 某些值,则发出警报。
您如何看待设置这种检查,有用与否?
堆表的碎片整理会减少磁盘上数据库文件的物理大小吗?
编辑 :
我最终使用这段代码来检测需要重建的堆表:
SELECT Database_id, Object_name([object_id]) as TableName, Index_type_desc,
Avg_fragmentation_in_percent, rowmodctr, forwarded_record_count
From sys.dm_db_index_physical_stats(db_id(),object_id(''),null,null,'detailed') AS SDDIPS
Inner join sys.sysindexes AS SI on SDDIPS.[object_id] = SI.id
AND SDDIPS.index_id = SI.indid
--Inner join sysobjects AS SO on SI.id = SO.id
Where index_level = 0 AND index_type_desc = 'HEAP' AND Avg_fragmentation_in_percent > 40
AND rowmodctr > 100 AND forwarded_record_count > 1000
Run Code Online (Sandbox Code Playgroud)
但是它运行了很长时间并且性能像 PLE 崩溃
我建议,与其“自己动手”,不如为自己节省大量时间和精力,并实施 Ola Hallengren 的索引维护脚本。
https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html
并且,查看 Brent Ozar 对 Ola 脚本的调整
https://www.brentozar.com/archive/2014/12/tweaking-defaults-ola-hallengrens-maintenance-scripts/
| 归档时间: |
|
| 查看次数: |
641 次 |
| 最近记录: |