Fragmentation:- Fragmentation can be defined as
condition where data is stored in a non continuous manner. In can be
defined into two types
1. Internal Fragmentation
2. External Fragmentation
Internal Fragmentation:- In this fragmentation, there exists a space between the different records within a page. This is caused due to the Insert, delete or Update process and due to this Index takes more space than it needs to and it result in more read operation during scanning. It can also be caused due to the low value of fill factor of the page which determine how much % of the page should be used for storing the records.
External Fragmentation:- In this fragmentation, the extents of the table is not physically stored continuously on the disk which causes the jump from one extent to another extent which takes longer time.
Both the fragmentation can be resolved by Rebuilding or Reorganization of the indexes of the tables.
1. Internal Fragmentation
2. External Fragmentation
Internal Fragmentation:- In this fragmentation, there exists a space between the different records within a page. This is caused due to the Insert, delete or Update process and due to this Index takes more space than it needs to and it result in more read operation during scanning. It can also be caused due to the low value of fill factor of the page which determine how much % of the page should be used for storing the records.
External Fragmentation:- In this fragmentation, the extents of the table is not physically stored continuously on the disk which causes the jump from one extent to another extent which takes longer time.
Both the fragmentation can be resolved by Rebuilding or Reorganization of the indexes of the tables.
Rebuild and Reorganization of
Indexes:- SQL Server has the ability of maintaining the indexes whenever
we makes changes (update, Insert, Delete) in the tables. Over a period of time,
the may causes the fragmentation on the table in which the
logical ordering based on the key value pairs does not match with the
physical ordering inside the data files. This causes the degradation
of the performance of the SQL Query.To solve this problem of
fragmentation, we use rebuilding or reorganization of the indexes.
In case of Rebuilding, it drop the particular index and again recreate it.It removes fragmentation, reclaims the disk space by compacting the pages based on the specified or existing fill factor setting, and again reorders the index rows in those contiguous pages. We can rebuild all the indexes of the table within a single transaction by specifying the ALL with it.
In case of Rebuilding, it drop the particular index and again recreate it.It removes fragmentation, reclaims the disk space by compacting the pages based on the specified or existing fill factor setting, and again reorders the index rows in those contiguous pages. We can rebuild all the indexes of the table within a single transaction by specifying the ALL with it.
ALTER INDEX [Indexname] ON [tablename]
REBUILD
ALTER INDEX ALL ON [tablename] REBUILD
In case of Reorganization, it defragments the leaf level nodes of indexes by physically reordering the leaf-level pages to match the logical, left to right, order of the leaf nodes. It uses minimal system resources and also compact the index pages
ALTER INDEX [Indexname] ON [tablename] REORGANIZE
ALTER INDEX ALL ON [tablename] REORGANIZE
Rebuild should be used when the fragmentation index is greater than 30% and reorganization option should be used when the fragmentation index is between 5% and 30%. Rebuilding of an Index can be done online or offline. But to achieve the availability of the index, rebuilding should be done online. Reorganization can be done online.
Find
fragmentation of the database for all the indexes
SELECT
ps.database_id
,
ps.
OBJECT_ID
,
ps.index_id
,
b.name
,
ps.avg_fragmentation_in_percent
FROM
sys.dm_db_index_physical_stats
(
DB_ID
(), NULL,
NULL, NULL, NULL)
AS
ps
INNER JOIN
sys.indexes
AS
b
ON
ps.
OBJECT_ID
=
b.
OBJECT_ID
AND
ps.index_id
=
b.index_id
WHERE
ps.database_id
=
DB_ID
()
ORDER BY
ps.
OBJECT_ID
GO
No comments:
Post a Comment