{"id":16183,"date":"2020-09-03T09:23:21","date_gmt":"2020-09-03T09:23:21","guid":{"rendered":"https:\/\/dbtut.com\/?p=16183"},"modified":"2020-09-15T11:09:31","modified_gmt":"2020-09-15T11:09:31","slug":"index-fragmentation-and-page-splits-in-sql-server","status":"publish","type":"post","link":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/","title":{"rendered":"Index Fragmentation and Page Splits in SQL Server"},"content":{"rendered":"<h3>What is Page Splits in SQL Server?<\/h3>\n<p>As it is known, there are 8KB areas called Page in the file base of SQL Server and 8 of them (8 X 8K = 64K) constitute an extent.<\/p>\n<p>Data and Indexes are stored on pages and Read \/ Write operations take place on extent basis. How many rows will be on each page may vary depending on the length of the row. If a long row is inserted or the current row is updated with too long data, SQL Server can replace existing rows to make changes. If the change does not fit on the page, SQL Server creates a new data page and moves the rows on this new page. This process is called page split.<\/p>\n<p>Page Split operation can sometimes cause performance problems in live systems.<\/p>\n<h3>Monitor Page Split on Perfmon<\/h3>\n<p>So how do we monitor Page Split on Perfmon? Here, we can capture Page Splits by using Perfmon tool in such performance problems.<\/p>\n<p>Let&#8217;s create our sample table.<\/p>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\nIF object_id('PageSplit_Table') IS NOT NULL\nBEGIN\n    DROP TABLE PageSplit_Table\nEND\nGO\nCREATE TABLE PageSplit_Table (col_1 INT,col_2 char(3950))\nGO\nCREATE UNIQUE CLUSTERED INDEX CIX_PageSplit_Table_col_1 ON PageSplit_Table(col_1)<\/pre>\n<p>Now let&#8217;s open Perfmon. Then we press the (plus) sign and add Page Splits \/ sec in SQL Server: Access Methods.<\/p>\n<p id=\"cJvgTEL\"><img loading=\"lazy\" decoding=\"async\" width=\"828\" height=\"590\" class=\"size-full wp-image-16184  aligncenter\" src=\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/img_5f50ae4476117.png\" alt=\"\" \/><\/p>\n<p id=\"JOhVVhJ\"><img loading=\"lazy\" decoding=\"async\" width=\"696\" height=\"74\" class=\"size-full wp-image-16185  aligncenter\" src=\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/img_5f50ae63af170.png\" alt=\"\" \/><\/p>\n<p>Then we run our INSERT block below.<\/p>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\nSET NOCOUNT ON\nGO\nDECLARE @i INT\nSET @i=0\nWHILE (@i&lt;5000)\nBEGIN\n    INSERT INTO  PageSplit_Table VALUES (@i,'___')\n    INSERT INTO  PageSplit_Table VALUES (10000-@i,'___')\n    SET @i=@i+1\nEND\nGO\nSET NOCOUNT OFF\nGO<\/pre>\n<p>Let&#8217;s turn on the monitor while the insert continues.<\/p>\n<p id=\"iYkhzQa\"><img loading=\"lazy\" decoding=\"async\" width=\"849\" height=\"496\" class=\"size-full wp-image-16186  aligncenter\" src=\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/img_5f50aeee3657c.png\" alt=\"\" \/><\/p>\n<p>This is how we capture the jump of Page Split \/ sec on Perfmon.<\/p>\n<p>Now let&#8217;s observe Index Fragmentation on Index.<\/p>\n<h3>What is Index Fragmentation in SQL Server?<\/h3>\n<p>We created our index. And for a while, we performed update, delete and insert operations on the table continuously.<\/p>\n<p>Suppose we perform a deletion. We have deleted some data from one page of the index. Then we wanted to insert another record. And since there is not enough space on the page where we deleted the record, sql server wrote this record to a new blank page.<\/p>\n<p>In this way, indexes start to be stored scattered on the disk over time and fragmentation increases. As the fragmentation increases, the performance of the index decreases. You can set a fill factor on the index to prevent the indexes from being fragmented quickly on the tables containing intense Update, Insert and Delete.<\/p>\n<h3>Index Fragementation Script in SQL Server<\/h3>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\n  \nSELECT s.[name] +'.'+t.[name]  AS table_name\n ,i.NAME AS index_name\n ,index_type_desc\n ,ROUND(avg_fragmentation_in_percent,2) AS avg_fragmentation_in_percent\n ,record_count AS table_record_count\nFROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ips\nINNER JOIN sys.tables t on t.[object_id] = ips.[object_id]\nINNER JOIN sys.schemas s on t.[schema_id] = s.[schema_id]\nINNER JOIN sys.indexes i ON (ips.object_id = i.object_id) AND (ips.index_id = i.index_id)\nORDER BY avg_fragmentation_in_percent DESC<\/pre>\n<p id=\"kYHDmbP\"><img loading=\"lazy\" decoding=\"async\" width=\"823\" height=\"73\" class=\"size-full wp-image-16187  aligncenter\" src=\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/img_5f50b090d5ea7.png\" alt=\"\" \/><\/p>\n<p>As it seems, the index named CIX_PageSplit_Table_col_1 is fragmented at a rate of 99.98%. This means that our index is now scattered. In other words, Index has reduced its own performance too much.<\/p>\n<p>Let&#8217;s observe the difference between statistics used by our queries processed with fragmented index and, healthy indexes.<\/p>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\n \nSET STATISTICS IO ON\nGO\n \nSELECT * FROM PageSplit_Table\n \nSET STATISTICS IO OFF\nGO<\/pre>\n<p>Here we get the statistics results;<\/p>\n<pre class=\"lang:default decode:true \">(10000 rows affected)\nTable 'PageSplit_Table'. Scan count 1, logical reads 10041, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.<\/pre>\n<p>Now let&#8217;s prepare a demo from the same table but with the Index not fragmented.<\/p>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\n \nIF object_id('No_PageSplit_Table') IS NOT NULL\n \nBEGIN\n    DROP TABLE No_PageSplit_Table\nEND\nGO\n \nCREATE TABLE No_PageSplit_Table (col_1 INT,col_2 char(3950))\nGO\n \nCREATE UNIQUE CLUSTERED INDEX CIX_PageSplit_Table_col_1 ON No_PageSplit_Table(col_1)\nGO\n \nUSE PSplit_Demo\nGO\n \nSET NOCOUNT ON\nGO\n \nDECLARE @i INT\nSET @i=0\nWHILE (@i&lt;10000)\nBEGIN\n    INSERT INTO  No_PageSplit_Table VALUES (@i,'___')\n    SET @i=@i+1\nEND\nGO\n \nSET NOCOUNT OFF\nGO<\/pre>\n<p>We created our second demo table in the same way and inserted the same data. Now let&#8217;s check the Fragmentation rates of the Indexes in these two tables.<\/p>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\n  \nSELECT s.[name] +'.'+t.[name]  AS table_name\n ,i.NAME AS index_name\n ,index_type_desc\n ,ROUND(avg_fragmentation_in_percent,2) AS avg_fragmentation_in_percent\n ,record_count AS table_record_count\nFROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ips\nINNER JOIN sys.tables t on t.[object_id] = ips.[object_id]\nINNER JOIN sys.schemas s on t.[schema_id] = s.[schema_id]\nINNER JOIN sys.indexes i ON (ips.object_id = i.object_id) AND (ips.index_id = i.index_id)\nORDER BY avg_fragmentation_in_percent DESC<\/pre>\n<p id=\"EOTGVBo\"><img loading=\"lazy\" decoding=\"async\" width=\"819\" height=\"76\" class=\"size-full wp-image-16188  aligncenter\" src=\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/img_5f50b2c5a853e.png\" alt=\"\" \/><\/p>\n<p>As you can see, our first index is fragmented at 99.98%, while our second index is fragmented at 0.44%. Now let&#8217;s run the same SELECT operation on both tables and observe the difference in performance.<\/p>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\n \nSET STATISTICS IO ON\nGO\n \nPRINT 'Page Split'\nSELECT * FROM PageSplit_Table WHERE col_2='a'\n \nPRINT 'No Page Split'\nSELECT * FROM No_PageSplit_Table WHERE col_2='a'\n \n \nSET STATISTICS IO OFF\nGO<\/pre>\n<p><strong>Statistics:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">Page Split\n \n(0 rows affected)\nTable 'PageSplit_Table'. Scan count 1, logical reads 10041, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.\nNo Page Split\n \n(0 rows affected)\nTable 'No_PageSplit_Table'. Scan count 1, logical reads 5024, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.<\/pre>\n<p>As you can see, Index exposed to Page Split does 10041 logical Read and index not exposed to Page Split does 5024 logical read.<\/p>\n<p>So, unfragmented index seems almost 2 times faster.<\/p>\n<p>Therefore, in your systems, be sure to check the Fragmentation values \u200b\u200bof your Indexes and monitor the Page Splits.<\/p>\n<h3 class=\"LC20lb DKV0Md\">Resolve SQL Server Index Fragmentation<\/h3>\n<p>In such cases, we must perform Reorganize or Rebuild operations according to the Fragmentation values of Indexes. Since the Fragmentation of our index exposed to Page Split is very high, we will apply REBUILD process.<\/p>\n<pre class=\"lang:default decode:true \">ALTER INDEX CIX_PageSplit_Table_col_1 ON PageSplit_Table REBUILD<\/pre>\n<p>After REBUILD operation, let&#8217;s look at the Fragmentation value of our Index again.<\/p>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\n  \nSELECT s.[name] +'.'+t.[name]  AS table_name\n ,i.NAME AS index_name\n ,index_type_desc\n ,ROUND(avg_fragmentation_in_percent,2) AS avg_fragmentation_in_percent\n ,record_count AS table_record_count\nFROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ips\nINNER JOIN sys.tables t on t.[object_id] = ips.[object_id]\nINNER JOIN sys.schemas s on t.[schema_id] = s.[schema_id]\nINNER JOIN sys.indexes i ON (ips.object_id = i.object_id) AND (ips.index_id = i.index_id)\nORDER BY avg_fragmentation_in_percent DESC<\/pre>\n<p id=\"ZtbHNgd\"><img loading=\"lazy\" decoding=\"async\" width=\"833\" height=\"90\" class=\"size-full wp-image-16189  aligncenter\" src=\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/img_5f50b4ea13960.png\" alt=\"\" \/><\/p>\n<p>As you can see, our index is fixed. In such cases, we need to apply Index maintenance periodically.<\/p>\n<p>Now, let&#8217;s run our SELECT script on both tables again and check the statistics.<\/p>\n<pre class=\"lang:default decode:true \">USE PSplit_Demo\nGO\n \nSET STATISTICS IO ON\nGO\n \nPRINT 'Page Split'\nSELECT * FROM PageSplit_Table WHERE col_2='a'\n \nPRINT 'No Page Split'\nSELECT * FROM No_PageSplit_Table WHERE col_2='a'\n \n \nSET STATISTICS IO O<\/pre>\n<p><strong>Statistics:<\/strong><\/p>\n<pre class=\"lang:default decode:true \">Page Split\n \n(0 rows affected)\nTable 'PageSplit_Table'. Scan count 1, logical reads 5020, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.\nNo Page Split\n \n(0 rows affected)\nTable 'No_PageSplit_Table'. Scan count 1, logical reads 5024, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.<\/pre>\n<p>As you can see, the values \u200b\u200bare the same. In fact, the performance of our scattered Index even better than the other after rebuild operation.<\/p>\n<p>You may want to read \u201c<a href=\"https:\/\/dbtut.com\/index.php\/2018\/06\/12\/index-concept-and-performance-effect-on-sql-server\/\" target=\"_blank\" rel=\"noopener noreferrer\">Index Concept and Performance Effect On SQL Server<\/a>\u201d and \u201c<a href=\"https:\/\/dbtut.com\/index.php\/2018\/06\/13\/statistic-concept-and-performance-effect-on-sql-server\/\" target=\"_blank\" rel=\"noopener noreferrer\">Statistic Concept and Performance Effect On SQL Server<\/a>\u201c.<\/p>\n<p>Good luck with.<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_16183\" class=\"pvc_stats all  \" data-element-id=\"16183\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>What is Page Splits in SQL Server? As it is known, there are 8KB areas called Page in the file base of SQL Server and 8 of them (8 X 8K = 64K) constitute an extent. Data and Indexes are stored on pages and Read \/ Write operations take place on extent basis. How many &hellip;<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_16183\" class=\"pvc_stats all  \" data-element-id=\"16183\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":483,"featured_media":16190,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[3],"tags":[9883,9884,9896,9894,9897,9898,9892,9891,9882,9885,9886,9893,9887,9888,9895,9890,9889,9881],"class_list":["post-16183","post","type-post","status-publish","format-standard","has-post-thumbnail","","category-mssql","tag-check-page-split","tag-detect-page-split","tag-detecting-and-resolving-fragmented-indexes","tag-how-do-indexes-get-fragmented","tag-how-to-fix-fragmented-indexes-in-sql-server","tag-how-to-identify-and-resolve-sql-server-index-fragmentation","tag-index-fragementation-script","tag-index-fragementation-script-in-sql-server","tag-monitor-page-split-on-perfmon","tag-prevent-page-splits","tag-prevent-page-splits-in-sql-server","tag-resolve-sql-server-index-fragmentation","tag-track-page-split","tag-track-page-split-in-sql-server","tag-what-causes-index-fragmentation-in-sql-server","tag-what-is-index-fragmentation","tag-what-is-index-fragmentation-in-sql-server","tag-what-is-page-splits-in-sql-server"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Index Fragmentation and Page Splits in SQL Server - Database Tutorials<\/title>\n<meta name=\"description\" content=\"Index Fragmentation and Page Splits in SQL Server\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Index Fragmentation and Page Splits in SQL Server - Database Tutorials\" \/>\n<meta property=\"og:description\" content=\"Index Fragmentation and Page Splits in SQL Server\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/\" \/>\n<meta property=\"og:site_name\" content=\"Database Tutorials\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-03T09:23:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-15T11:09:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"489\" \/>\n\t<meta property=\"og:image:height\" content=\"311\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Yusuf KAHVEC\u0130\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Yusuf KAHVEC\u0130\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/\"},\"author\":{\"name\":\"Yusuf KAHVEC\u0130\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/695ad69b2bd896864842ba8772930150\"},\"headline\":\"Index Fragmentation and Page Splits in SQL Server\",\"datePublished\":\"2020-09-03T09:23:21+00:00\",\"dateModified\":\"2020-09-15T11:09:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/\"},\"wordCount\":681,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg\",\"keywords\":[\"check page split\",\"detect page split\",\"Detecting and resolving fragmented indexes\",\"How do indexes get fragmented?\",\"how to fix fragmented indexes in sql server\",\"How to identify and resolve SQL Server Index Fragmentation\",\"Index Fragementation Script\",\"Index Fragementation Script in SQL Server\",\"Monitor Page Split on Perfmon\",\"prevent page splits\",\"prevent page splits in sql server\",\"Resolve SQL Server Index Fragmentation\",\"track page split\",\"track page split in sql server\",\"What causes index fragmentation in SQL Server?\",\"What is Index Fragmentation\",\"What is Index Fragmentation in SQL Server?\",\"What is Page Splits in SQL Server\"],\"articleSection\":[\"MSSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/\",\"url\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/\",\"name\":\"Index Fragmentation and Page Splits in SQL Server - Database Tutorials\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg\",\"datePublished\":\"2020-09-03T09:23:21+00:00\",\"dateModified\":\"2020-09-15T11:09:31+00:00\",\"description\":\"Index Fragmentation and Page Splits in SQL Server\",\"breadcrumb\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#primaryimage\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg\",\"width\":489,\"height\":311},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dbtut.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Index Fragmentation and Page Splits in SQL Server\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dbtut.com\/#website\",\"url\":\"https:\/\/dbtut.com\/\",\"name\":\"Database Tutorials\",\"description\":\"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux\",\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dbtut.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dbtut.com\/#organization\",\"name\":\"dbtut\",\"url\":\"https:\/\/dbtut.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"width\":223,\"height\":36,\"caption\":\"dbtut\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/695ad69b2bd896864842ba8772930150\",\"name\":\"Yusuf KAHVEC\u0130\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b7b4650ddb695869b13831d79f25c19ee915dc2151a7c8fcdf01538c295eb032?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b7b4650ddb695869b13831d79f25c19ee915dc2151a7c8fcdf01538c295eb032?s=96&d=mm&r=g\",\"caption\":\"Yusuf KAHVEC\u0130\"},\"url\":\"https:\/\/dbtut.com\/index.php\/author\/yusufkahveci\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Index Fragmentation and Page Splits in SQL Server - Database Tutorials","description":"Index Fragmentation and Page Splits in SQL Server","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/","og_locale":"en_US","og_type":"article","og_title":"Index Fragmentation and Page Splits in SQL Server - Database Tutorials","og_description":"Index Fragmentation and Page Splits in SQL Server","og_url":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/","og_site_name":"Database Tutorials","article_published_time":"2020-09-03T09:23:21+00:00","article_modified_time":"2020-09-15T11:09:31+00:00","og_image":[{"width":489,"height":311,"url":"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg","type":"image\/jpeg"}],"author":"Yusuf KAHVEC\u0130","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Yusuf KAHVEC\u0130","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#article","isPartOf":{"@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/"},"author":{"name":"Yusuf KAHVEC\u0130","@id":"https:\/\/dbtut.com\/#\/schema\/person\/695ad69b2bd896864842ba8772930150"},"headline":"Index Fragmentation and Page Splits in SQL Server","datePublished":"2020-09-03T09:23:21+00:00","dateModified":"2020-09-15T11:09:31+00:00","mainEntityOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/"},"wordCount":681,"commentCount":0,"publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"image":{"@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#primaryimage"},"thumbnailUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg","keywords":["check page split","detect page split","Detecting and resolving fragmented indexes","How do indexes get fragmented?","how to fix fragmented indexes in sql server","How to identify and resolve SQL Server Index Fragmentation","Index Fragementation Script","Index Fragementation Script in SQL Server","Monitor Page Split on Perfmon","prevent page splits","prevent page splits in sql server","Resolve SQL Server Index Fragmentation","track page split","track page split in sql server","What causes index fragmentation in SQL Server?","What is Index Fragmentation","What is Index Fragmentation in SQL Server?","What is Page Splits in SQL Server"],"articleSection":["MSSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/","url":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/","name":"Index Fragmentation and Page Splits in SQL Server - Database Tutorials","isPartOf":{"@id":"https:\/\/dbtut.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#primaryimage"},"image":{"@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#primaryimage"},"thumbnailUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg","datePublished":"2020-09-03T09:23:21+00:00","dateModified":"2020-09-15T11:09:31+00:00","description":"Index Fragmentation and Page Splits in SQL Server","breadcrumb":{"@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#primaryimage","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2020\/09\/Ads\u0131z.jpg","width":489,"height":311},{"@type":"BreadcrumbList","@id":"https:\/\/dbtut.com\/index.php\/2020\/09\/03\/index-fragmentation-and-page-splits-in-sql-server\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dbtut.com\/"},{"@type":"ListItem","position":2,"name":"Index Fragmentation and Page Splits in SQL Server"}]},{"@type":"WebSite","@id":"https:\/\/dbtut.com\/#website","url":"https:\/\/dbtut.com\/","name":"Database Tutorials","description":"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux","publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dbtut.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dbtut.com\/#organization","name":"dbtut","url":"https:\/\/dbtut.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","width":223,"height":36,"caption":"dbtut"},"image":{"@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dbtut.com\/#\/schema\/person\/695ad69b2bd896864842ba8772930150","name":"Yusuf KAHVEC\u0130","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/b7b4650ddb695869b13831d79f25c19ee915dc2151a7c8fcdf01538c295eb032?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b7b4650ddb695869b13831d79f25c19ee915dc2151a7c8fcdf01538c295eb032?s=96&d=mm&r=g","caption":"Yusuf KAHVEC\u0130"},"url":"https:\/\/dbtut.com\/index.php\/author\/yusufkahveci\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/16183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/users\/483"}],"replies":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/comments?post=16183"}],"version-history":[{"count":0,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/16183\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media\/16190"}],"wp:attachment":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media?parent=16183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/categories?post=16183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/tags?post=16183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}