Total Page Preview:   000000000919

SQL Server - Fragmentation on azure sql database

In this article we will learn fragmentation on azure SQL database or SQL server database.

Index Fragmentation In SQLDatabase
 
 

SELECT TOP 100
        OBJECT_NAME(ps.object_id) AS TableName
       ,i.name AS IndexName
       ,ips.index_type_desc
       ,index_level
       ,ips.avg_fragmentation_in_percent
       ,ips.avg_page_space_used_in_percent
       ,ips.page_count
 
FROM   sys.dm_db_partition_stats ps
INNER JOIN sys.indexes i ON ps.object_id = i.object_id AND ps.index_id = i.index_id
CROSS APPLY sys.dm_db_index_physical_stats(DB_ID(), ps.object_id, ps.index_id, null, 'DETAILED') ips
ORDER BY ips.avg_fragmentation_in_percent DESC

Result :

Index Fragmentation In SQLDatabase
 
 What is avg_fragmentation_in_percent and avg_page_space_used_in_percent:
 
  • avg_fragmentation_in_percent: avg_fragmentation_in_percent is a percentage value that represents external fragmentation. For a clustered table and leaf level of index pages, this is a Logical fragmentation, while for heap, this is Extent fragmentation. The minimum value is better. If this value is more than 10%, than some corrective action should be taken.

 

  • avg_page_space_used_in_percent: avg_page_space_used_in_percent is an average percentage use of pages that represents to internal fragmentation. Higher the value, the better it is. If this value is lower than 75%, than some corrective action should be taken.
 
Reducing fragmentation(Suggestion):
  • Reducing Fragmentation in Heap: Create a clustered index on the table. when Creating the clustered index, rearrange the records in an order, and then place the pages contiguously on disk.

 

  • Reducing Fragmentation in Index: if avg_fragmentation_in_percent between 5% to 30%, then use ALTER INDEX REORGANIZE: This statement is replacement for DBCC INDEXDEFRAG to reorder the leaf level pages of the index in a logical order. As this is an online operation, the index is available while the statement is running.

 

  • Reducing Fragmentation in Index: if avg_fragmentation_in_percent between 30% to 100% then use ALTER INDEX REBUILD: This is replacement for DBCC DBREINDEX to rebuild the index online or offline. also use the drop and re-create index method.

 

  • Note:  I will strongly  recommend Please don't drop and re-create cluster index.

 

Thank You

About Author

Brijesh Kumar

Database Developer

I have more then 6 years Experience in Microsoft Technologies - SQL Server Database, ETL Azure Cloud - Azure SQL Database, CosmosDB, Azure Data Factory, PowerBI, Web Job, Azure Function, Azure Storage, Web Apps, Powershall and Database Migration On-Premise to Azure Cloud.
LinkedIn : https://www.linkedin.com



Comments







Facebook User: