İndekslerin fragmente olması istenmeyen bir durumdur. Fragmente olan indexlerin belirli periyotlarda rebuild/reorganize edilmesi gerekir.
Veritabanızda fragmente oranı %30 un üzerinde üzerinde olan indeksleri bulup rebuild eden T-SQL kod aşağıdaki gibidir:
declare @SQLstmt varchar(max)
set @SQLstmt =''
select @SQLstmt =@SQLstmt + 'alter index ' + i.name + ' on ' + object_name(s.object_id ) + ' rebuild with(online=on);--pagecount:' + cast(s.page_count as varchar(16)) + '
'
from sys.dm_db_index_physical_stats(db_id(db_name()),null,null,null,null) s
inner join sys.indexes i on s.object_id=i.object_id and s.index_id=i.index_id
where s.avg_fragmentation_in_percent>30
and s.index_id>0
order by s.page_count
exec(@SQLstmt )
Dilerseniz aynı işlemi dinamik tek bir SQL cümlesi yerine cursor ile de halledebilirsiz.
#DBA #SQL #Server #Performance #Tuning
Fragmantation etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Fragmantation etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Kaydol:
Kayıtlar (Atom)
.::YASAL UYARI::.
©2004-2024 Mehmet GÜZEL, www.mehmetguzel.net
Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.
Site içeriği kaynak gösterilmek koşuluyla yayınlanabilir. Yazılan yazı ve yorumlar sadece yazı ve yorum sahiplerini bağlar.