andreasoc
Goto Top

SQL Neuindizierung hat keine Auswirkung auf die Fragmentierung

Hallo zusammen,

ein SQL2016 Datenbanksystem ist sehr langsam, daher habe ich einmal die Index-Fragmentierung geprüft. Hier sind sehr viele Indizes über 60%, viele sogar über 90%. Daher habe ich über einen Wartungsplan den Index komplett neu erstellen lassen (Standardeinstellungen). Aber auch nach der Neuerstellung hat sich an der Fragmentierung nichts geändert. Werden selbst angelegte Indizes nicht angefasst?

Als Prüfung habe ich diesen Befehl genommen:
SELECT OBJECT_NAME(ind.OBJECT_ID) AS TableName, 
ind.name AS IndexName, indexstats.index_type_desc AS IndexType, 
indexstats.avg_fragmentation_in_percent 
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, NULL) indexstats 
INNER JOIN sys.indexes ind  
ON ind.object_id = indexstats.object_id 
AND ind.index_id = indexstats.index_id 
WHERE indexstats.avg_fragmentation_in_percent > 30 
ORDER BY indexstats.avg_fragmentation_in_percent DESC

Hat jemand eine Idee?

Content-ID: 357753

Url: https://administrator.de/contentid/357753

Ausgedruckt am: 25.11.2024 um 13:11 Uhr

AndreasHoster
AndreasHoster 11.12.2017 um 13:46:54 Uhr
Goto Top
Wir groß sind denn die Indizes, bei denen die Fragmentierung nicht kleiner wird?
Aus https://docs.microsoft.com/en-us/sql/relational-databases/indexes/reorga ...
In general, fragmentation on small indexes is often not controllable. The pages of small indexes are sometimes stored on mixed extents. Mixed extents are shared by up to eight objects, so the fragmentation in a small index might not be reduced after reorganizing or rebuilding the index.

Im Internet findet man so als Indexgröße, ab der man sich überhaupt Gedanken machen soll, 1000 Pages:
z.B. https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.h ...
Set a size, in pages; indexes with fewer pages are skipped for index maintenance. The default is 1000 pages. This is based on Microsoft’s recommendation.