Table Fragmentation The 2019 Stack Overflow Developer Survey Results Are InHow to identify fragmentation level of the table data itself not the table indexes, and then defragInnoDB, Hash Table, Reference Table and FragmentationMeasure fragmentation of a single index?SQL Server Index, difference between Average fragmentation and Total fragmentationWhat is Heap Fragmentation sans Indexes?Index with high fragmentation percentageDeleting data from a table containing LOBs did not reduce the amount of data reported INTERNALLY by the table or databaseFragmentation of indexes with small a databaseTable and Index fragmentationFragmentation Level for Heaps

If I score a critical hit on an 18 or higher, what are my chances of getting a critical hit if I roll 3d20?

Why does the nucleus not repel itself?

Falsification in Math vs Science

If I can cast sorceries at instant speed, can I use sorcery-speed activated abilities at instant speed?

writing variables above the numbers in tikz picture

How come people say “Would of”?

Is it possible for absolutely everyone to attain enlightenment?

Can withdrawing asylum be illegal?

What is the most efficient way to store a numeric range?

Kerning for subscripts of sigma?

Pokemon Turn Based battle (Python)

What is the meaning of Triage in Cybersec world?

I am an eight letter word. What am I?

Why was M87 targeted for the Event Horizon Telescope instead of Sagittarius A*?

Are spiders unable to hurt humans, especially very small spiders?

Ubuntu Server install with full GUI

Accepted by European university, rejected by all American ones I applied to? Possible reasons?

Match Roman Numerals

Did any laptop computers have a built-in 5 1/4 inch floppy drive?

The phrase "to the numbers born"?

Will it cause any balance problems to have PCs level up and gain the benefits of a long rest mid-fight?

What is this sharp, curved notch on my knife for?

What is this business jet?

How to translate "being like"?



Table Fragmentation



The 2019 Stack Overflow Developer Survey Results Are InHow to identify fragmentation level of the table data itself not the table indexes, and then defragInnoDB, Hash Table, Reference Table and FragmentationMeasure fragmentation of a single index?SQL Server Index, difference between Average fragmentation and Total fragmentationWhat is Heap Fragmentation sans Indexes?Index with high fragmentation percentageDeleting data from a table containing LOBs did not reduce the amount of data reported INTERNALLY by the table or databaseFragmentation of indexes with small a databaseTable and Index fragmentationFragmentation Level for Heaps



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








2















If I execute the following:



SELECT dbschemas.[name] as 'Schema', 
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.alloc_unit_type_desc,
indexstats.avg_fragmentation_in_percent as avg,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID('dbname'), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID('dbname')
ORDER BY indexstats.avg_fragmentation_in_percent desc


It shows fragmentation level. I then ran Ola Hallengren's index optimise script which obviously reduces indexes.



If I run the query again it now shows high fragmentation in tables without an index e.g:



Schema Table Index alloc_unit_type_desc avg page_cont
dbo tablename NULL IN_ROW_DATA 99.4362934362934 8176


Should I be concerned by these?



Anything I can do?



Anything I should be doing?



We are experiencing performance issues. I am aware that 2008 is not ideal and that is being addressed.



The datafile is also showing as 220gb but the actual space used is 140gb.










share|improve this question



















  • 3





    "Performance issues" is a huge area. Maybe you can pinpoint a specific query or table that's the problem and troubleshoot it. If it's the heap, then consider adding a clustered index in accordance to the queries and operations in which it's involved.

    – EzLo
    11 hours ago

















2















If I execute the following:



SELECT dbschemas.[name] as 'Schema', 
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.alloc_unit_type_desc,
indexstats.avg_fragmentation_in_percent as avg,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID('dbname'), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID('dbname')
ORDER BY indexstats.avg_fragmentation_in_percent desc


It shows fragmentation level. I then ran Ola Hallengren's index optimise script which obviously reduces indexes.



If I run the query again it now shows high fragmentation in tables without an index e.g:



Schema Table Index alloc_unit_type_desc avg page_cont
dbo tablename NULL IN_ROW_DATA 99.4362934362934 8176


Should I be concerned by these?



Anything I can do?



Anything I should be doing?



We are experiencing performance issues. I am aware that 2008 is not ideal and that is being addressed.



The datafile is also showing as 220gb but the actual space used is 140gb.










share|improve this question



















  • 3





    "Performance issues" is a huge area. Maybe you can pinpoint a specific query or table that's the problem and troubleshoot it. If it's the heap, then consider adding a clustered index in accordance to the queries and operations in which it's involved.

    – EzLo
    11 hours ago













2












2








2








If I execute the following:



SELECT dbschemas.[name] as 'Schema', 
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.alloc_unit_type_desc,
indexstats.avg_fragmentation_in_percent as avg,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID('dbname'), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID('dbname')
ORDER BY indexstats.avg_fragmentation_in_percent desc


It shows fragmentation level. I then ran Ola Hallengren's index optimise script which obviously reduces indexes.



If I run the query again it now shows high fragmentation in tables without an index e.g:



Schema Table Index alloc_unit_type_desc avg page_cont
dbo tablename NULL IN_ROW_DATA 99.4362934362934 8176


Should I be concerned by these?



Anything I can do?



Anything I should be doing?



We are experiencing performance issues. I am aware that 2008 is not ideal and that is being addressed.



The datafile is also showing as 220gb but the actual space used is 140gb.










share|improve this question
















If I execute the following:



SELECT dbschemas.[name] as 'Schema', 
dbtables.[name] as 'Table',
dbindexes.[name] as 'Index',
indexstats.alloc_unit_type_desc,
indexstats.avg_fragmentation_in_percent as avg,
indexstats.page_count
FROM sys.dm_db_index_physical_stats (DB_ID('dbname'), NULL, NULL, NULL, NULL) AS indexstats
INNER JOIN sys.tables dbtables on dbtables.[object_id] = indexstats.[object_id]
INNER JOIN sys.schemas dbschemas on dbtables.[schema_id] = dbschemas.[schema_id]
INNER JOIN sys.indexes AS dbindexes ON dbindexes.[object_id] = indexstats.[object_id]
AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.database_id = DB_ID('dbname')
ORDER BY indexstats.avg_fragmentation_in_percent desc


It shows fragmentation level. I then ran Ola Hallengren's index optimise script which obviously reduces indexes.



If I run the query again it now shows high fragmentation in tables without an index e.g:



Schema Table Index alloc_unit_type_desc avg page_cont
dbo tablename NULL IN_ROW_DATA 99.4362934362934 8176


Should I be concerned by these?



Anything I can do?



Anything I should be doing?



We are experiencing performance issues. I am aware that 2008 is not ideal and that is being addressed.



The datafile is also showing as 220gb but the actual space used is 140gb.







sql-server sql-server-2008 ola-hallengren fragmentation






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 1 hour ago









Paul White

54.2k14288461




54.2k14288461










asked 11 hours ago









RoundRound

182




182







  • 3





    "Performance issues" is a huge area. Maybe you can pinpoint a specific query or table that's the problem and troubleshoot it. If it's the heap, then consider adding a clustered index in accordance to the queries and operations in which it's involved.

    – EzLo
    11 hours ago












  • 3





    "Performance issues" is a huge area. Maybe you can pinpoint a specific query or table that's the problem and troubleshoot it. If it's the heap, then consider adding a clustered index in accordance to the queries and operations in which it's involved.

    – EzLo
    11 hours ago







3




3





"Performance issues" is a huge area. Maybe you can pinpoint a specific query or table that's the problem and troubleshoot it. If it's the heap, then consider adding a clustered index in accordance to the queries and operations in which it's involved.

– EzLo
11 hours ago





"Performance issues" is a huge area. Maybe you can pinpoint a specific query or table that's the problem and troubleshoot it. If it's the heap, then consider adding a clustered index in accordance to the queries and operations in which it's involved.

– EzLo
11 hours ago










1 Answer
1






active

oldest

votes


















6














Ola Hallengren's index optimize script does not perform Heap defragmentation.



In other words table rebuilds are not happening when running the procedure and that is expected.



You could run ALTER TABLE dbo.tablename REBUILD;
to remove the fragmentation.



This also rebuilds the nonclustered indexes on the heap.



Better option than rebuilding your heap tables



You do have to ask yourself or the application team why you can't add a clustered index to the table.
as rebuilding the heap uses a lot of resources and is a temporary solution.



If you add a clustered index, that index is included in the Index Optimize script, and fragmentation will be removed when the script runs.



Another option is to add the clustered index and stop worrying about index fragmentation.





We are experiencing performance issues. I am aware that 2008 is not
ideal and that is being addressed.




It could be that it is because of the forwarded records in the heap tables, but at 8167 pages I would say that that is not likely. A starting point could be looking at the queries being executed on your server.



SP_BlitzCache can help with finding your worst performing queries.





The datafile is also showing as 220gb but the actual space used is
140gb.




This should not be a problem. Apart from disk space you should not be too worried. You are not relying on autogrowth, which is a good thing.






share|improve this answer

























  • Alter table <table> REBUILD is supported in SQL Server 2008 onwards so you can do that to rebuild the heap. Tibor Karaszi has a script here: karaszi.com/rebuild-all-fragmented-heaps that is of great help

    – Spörri
    6 hours ago











Your Answer








StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "182"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f234551%2ftable-fragmentation%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes









6














Ola Hallengren's index optimize script does not perform Heap defragmentation.



In other words table rebuilds are not happening when running the procedure and that is expected.



You could run ALTER TABLE dbo.tablename REBUILD;
to remove the fragmentation.



This also rebuilds the nonclustered indexes on the heap.



Better option than rebuilding your heap tables



You do have to ask yourself or the application team why you can't add a clustered index to the table.
as rebuilding the heap uses a lot of resources and is a temporary solution.



If you add a clustered index, that index is included in the Index Optimize script, and fragmentation will be removed when the script runs.



Another option is to add the clustered index and stop worrying about index fragmentation.





We are experiencing performance issues. I am aware that 2008 is not
ideal and that is being addressed.




It could be that it is because of the forwarded records in the heap tables, but at 8167 pages I would say that that is not likely. A starting point could be looking at the queries being executed on your server.



SP_BlitzCache can help with finding your worst performing queries.





The datafile is also showing as 220gb but the actual space used is
140gb.




This should not be a problem. Apart from disk space you should not be too worried. You are not relying on autogrowth, which is a good thing.






share|improve this answer

























  • Alter table <table> REBUILD is supported in SQL Server 2008 onwards so you can do that to rebuild the heap. Tibor Karaszi has a script here: karaszi.com/rebuild-all-fragmented-heaps that is of great help

    – Spörri
    6 hours ago















6














Ola Hallengren's index optimize script does not perform Heap defragmentation.



In other words table rebuilds are not happening when running the procedure and that is expected.



You could run ALTER TABLE dbo.tablename REBUILD;
to remove the fragmentation.



This also rebuilds the nonclustered indexes on the heap.



Better option than rebuilding your heap tables



You do have to ask yourself or the application team why you can't add a clustered index to the table.
as rebuilding the heap uses a lot of resources and is a temporary solution.



If you add a clustered index, that index is included in the Index Optimize script, and fragmentation will be removed when the script runs.



Another option is to add the clustered index and stop worrying about index fragmentation.





We are experiencing performance issues. I am aware that 2008 is not
ideal and that is being addressed.




It could be that it is because of the forwarded records in the heap tables, but at 8167 pages I would say that that is not likely. A starting point could be looking at the queries being executed on your server.



SP_BlitzCache can help with finding your worst performing queries.





The datafile is also showing as 220gb but the actual space used is
140gb.




This should not be a problem. Apart from disk space you should not be too worried. You are not relying on autogrowth, which is a good thing.






share|improve this answer

























  • Alter table <table> REBUILD is supported in SQL Server 2008 onwards so you can do that to rebuild the heap. Tibor Karaszi has a script here: karaszi.com/rebuild-all-fragmented-heaps that is of great help

    – Spörri
    6 hours ago













6












6








6







Ola Hallengren's index optimize script does not perform Heap defragmentation.



In other words table rebuilds are not happening when running the procedure and that is expected.



You could run ALTER TABLE dbo.tablename REBUILD;
to remove the fragmentation.



This also rebuilds the nonclustered indexes on the heap.



Better option than rebuilding your heap tables



You do have to ask yourself or the application team why you can't add a clustered index to the table.
as rebuilding the heap uses a lot of resources and is a temporary solution.



If you add a clustered index, that index is included in the Index Optimize script, and fragmentation will be removed when the script runs.



Another option is to add the clustered index and stop worrying about index fragmentation.





We are experiencing performance issues. I am aware that 2008 is not
ideal and that is being addressed.




It could be that it is because of the forwarded records in the heap tables, but at 8167 pages I would say that that is not likely. A starting point could be looking at the queries being executed on your server.



SP_BlitzCache can help with finding your worst performing queries.





The datafile is also showing as 220gb but the actual space used is
140gb.




This should not be a problem. Apart from disk space you should not be too worried. You are not relying on autogrowth, which is a good thing.






share|improve this answer















Ola Hallengren's index optimize script does not perform Heap defragmentation.



In other words table rebuilds are not happening when running the procedure and that is expected.



You could run ALTER TABLE dbo.tablename REBUILD;
to remove the fragmentation.



This also rebuilds the nonclustered indexes on the heap.



Better option than rebuilding your heap tables



You do have to ask yourself or the application team why you can't add a clustered index to the table.
as rebuilding the heap uses a lot of resources and is a temporary solution.



If you add a clustered index, that index is included in the Index Optimize script, and fragmentation will be removed when the script runs.



Another option is to add the clustered index and stop worrying about index fragmentation.





We are experiencing performance issues. I am aware that 2008 is not
ideal and that is being addressed.




It could be that it is because of the forwarded records in the heap tables, but at 8167 pages I would say that that is not likely. A starting point could be looking at the queries being executed on your server.



SP_BlitzCache can help with finding your worst performing queries.





The datafile is also showing as 220gb but the actual space used is
140gb.




This should not be a problem. Apart from disk space you should not be too worried. You are not relying on autogrowth, which is a good thing.







share|improve this answer














share|improve this answer



share|improve this answer








edited 11 hours ago

























answered 11 hours ago









Randi VertongenRandi Vertongen

4,7711924




4,7711924












  • Alter table <table> REBUILD is supported in SQL Server 2008 onwards so you can do that to rebuild the heap. Tibor Karaszi has a script here: karaszi.com/rebuild-all-fragmented-heaps that is of great help

    – Spörri
    6 hours ago

















  • Alter table <table> REBUILD is supported in SQL Server 2008 onwards so you can do that to rebuild the heap. Tibor Karaszi has a script here: karaszi.com/rebuild-all-fragmented-heaps that is of great help

    – Spörri
    6 hours ago
















Alter table <table> REBUILD is supported in SQL Server 2008 onwards so you can do that to rebuild the heap. Tibor Karaszi has a script here: karaszi.com/rebuild-all-fragmented-heaps that is of great help

– Spörri
6 hours ago





Alter table <table> REBUILD is supported in SQL Server 2008 onwards so you can do that to rebuild the heap. Tibor Karaszi has a script here: karaszi.com/rebuild-all-fragmented-heaps that is of great help

– Spörri
6 hours ago

















draft saved

draft discarded
















































Thanks for contributing an answer to Database Administrators Stack Exchange!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f234551%2ftable-fragmentation%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to make RAID controller rescan devices The 2019 Stack Overflow Developer Survey Results Are InLSI MegaRAID SAS 9261-8i: Disk isn't recognized after replacementHow to monitor the hard disk status behind Dell PERC H710 Raid Controller with CentOS 6?LSI MegaRAID - Recreate missing RAID 1 arrayext. 2-bay USB-Drive with RAID: btrfs RAID vs built-in RAIDInvalid SAS topologyDoes enabling JBOD mode on LSI based controllers affect existing logical disks/arrays?Why is there a shift between the WWN reported from the controller and the Linux system?Optimal RAID 6+0 Setup for 40+ 4TB DisksAccidental SAS cable removal

Unbreakable Formation vs. Cry of the Carnarium The 2019 Stack Overflow Developer Survey Results Are InCan an indestructible creature die by a combination of damage and -X/-X effects?Can a non-instant or sorcery ever have flashback?do creatures created after a “all creatures get -1/-1 until end of turn” instant get -1/-1 as well?What happens when I target an indestructible card with an “if that would die this turn, exile it instead” effect?Exalted trigger timingWhat happens when a non-token creature loses all abilities, is exiled, then returns?Does the spell cast with Yahenni's Expertise resolve before state-based effects are checked?What happens if Always Watching is destroyed mid-combat?MTG: Abilities lost when exiled?Under which controller does a stolen permanent come into play after being exiled?

How can I have a shield and a way of attacking at distance at the same time? The 2019 Stack Overflow Developer Survey Results Are InDoes the Thrown property mean I can attack with my DEX?Is it possible to build a custom weapon, and if so, how will my character be able to use it?Can the Ghost Touch weapon property allow an attacker to perform incorporeal touch attacks?The DM allowed me to wield two shields, how can I get the most AC and HP, as a Bear Barbarian?Are there ways other than Kensei Weapons or Hex Warrior to use an ability other than STR for non-finesse melee weapons?Cheapest way to cast spells with sword and (heavy) shield?Is this homebrew “Throwing Weapons Master” feat balanced?Can Hexblade warlocks use a staff and shield?Are there any balance issues with allowing thrown Javelins to be drawn for free like ammunition weapons?Does an unattuned Frost Brand weapon still glow in freezing temperatures?Does a druid starting with a bow start with no arrows?Is it possible to build a custom weapon, and if so, how will my character be able to use it?