Ola's maintenance solution taking too long on VLDB's

  • ffarouqi - Tuesday, December 19, 2017 10:10 AM

    All,
    I am looking into optimizing Ola's maintenance solution by tweaking around some parameters that is part of the stored proc. However, it is becoming really difficult to have the run time reduced in order to defrag the indexes across multiple VLDB's. Is there a way I can cut down the run time and still complete the maintenance routine across all our databases (we have around more than 50 databases and most of them are like in the 300 to 700 GB range with some of them even being a TB in size). Also, kindly, let me know if there is a better way of doing it or a better solution out there. Our maintenance window starts at 8p on Friday and extends up until Sunday midnight.


    EXECUTE dbo.IndexOptimize
    @databases = 'USER_DATABASES',
    @FragmentationMedium = 'INDEX_REORGANIZE,INDEX_REBUILD_ONLINE',
    @FragmentationHigh = 'INDEX_REBUILD_ONLINE,INDEX_REBUILD_OFFLINE',
    @FragmentationLevel1 = 30,
    @FragmentationLevel2 = 50,
    @MaxDOP = 8,
    @UpdateStatistics = 'ALL',
    @OnlyModifiedStatistics = 'Y',
    @SortInTempdb = 'N',
    @StatisticsSample = 100

    We have some TB scale tables, and we also use Ola Hallengren's index maintenance jobs. You didn't mention partitioning, which is essential for when operating at this scale. Read up on the PartitionLevel option. I don't partition every table and index, only the largest, but when it comes to incremental maintenance operations, it really shines.

    https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html

    Maintain partitioned indexes on the partition level. If this parameter is set to Y, the fragmentation level and page count is checked for each partition. The appropriate index maintenance (reorganize or rebuild) is then performed for each partition.

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho

  • ALTER INDEX { index_name | ALL } ON <object>
    {
      REBUILD {
        [ PARTITION = ALL ] [ WITH ( <rebuild_index_option> [ ,...n ] ) ] 
        | [ PARTITION = partition_number [ WITH ( <single_partition_rebuild_index_option> ) [ ,...n ] ]
      }
      | DISABLE
      | REORGANIZE [ PARTITION = partition_number ] [ WITH ( <reorganize_option> ) ]
      | SET ( <set_index_option> [ ,...n ] ) 
      | RESUME [WITH (<resumable_index_options>,[…n])]
      | PAUSE
      | ABORT
    }
    [ ; ]

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho

  • I would start by only doing rebuilds - especially if you're on Enterprise Edition and that MAXDOP = 8 is helping you more than MAXDOP = 1 would.  I agree with the other posters; reorganize is a waste.  It has one benefit over rebuild - if you stop it partway through, some of its work remains.

    An easy thing is that you can also try tuning the MAXDOP - is 8 too high?  I'd guess that MAXDOP 3 or 4 would deliver nearly all of the performance at a much lower CPU cost.  It's certainly at the upper limit of what I'd do.  If you have dedicated, separated disks - or have databases on 100% flash storage - you can experiment with running two lower maxdop index maintenance jobs in parallel, and see if the aggregate result is superior.  If you're on shared spinning disks, expect it to get worse instead.

    Do make sure you're doing statistics maintenance, as Jeff said.

    More importantly, while I don't agree with the "turn off index maint" part of Jeff's statement, I 100% agree with FILLFACTOR maintenance and care, to the point that years ago I started changing the DEFAULT fillfactor to less than 100%, on the premise that it's an exceptional case where 100 is ideal for most indexes across the board, not a normal case.  Leave a little room for new/larger (VARCHAR) rows on each page, and you're likely a lot happier.

    Monitor which indexes are getting rebuilt EVERY time; consider those for dropping fillfactor - they probably have rows added or enlarged "in the middle" regularly.

    If you can, I also split my maintenance by size; tiny things get rebuilt and their statistics updated much more often than big ones that take time, since it's nearly free (a few minutes during a short nightly maintenance/slowness OK time) if you have some time nightly where performance degradation or brief blocking is ok.  If you don't have that time, obviously don't do that!

  • Nadrek - Saturday, January 6, 2018 2:52 PM

    I would start by only doing rebuilds - especially if you're on Enterprise Edition and that MAXDOP = 8 is helping you more than MAXDOP = 1 would.  I agree with the other posters; reorganize is a waste.  It has one benefit over rebuild - if you stop it partway through, some of its work remains.

    An easy thing is that you can also try tuning the MAXDOP - is 8 too high?  I'd guess that MAXDOP 3 or 4 would deliver nearly all of the performance at a much lower CPU cost.  It's certainly at the upper limit of what I'd do.  If you have dedicated, separated disks - or have databases on 100% flash storage - you can experiment with running two lower maxdop index maintenance jobs in parallel, and see if the aggregate result is superior.  If you're on shared spinning disks, expect it to get worse instead.

    Do make sure you're doing statistics maintenance, as Jeff said.

    More importantly, while I don't agree with the "turn off index maint" part of Jeff's statement, I 100% agree with FILLFACTOR maintenance and care, to the point that years ago I started changing the DEFAULT fillfactor to less than 100%, on the premise that it's an exceptional case where 100 is ideal for most indexes across the board, not a normal case.  Leave a little room for new/larger (VARCHAR) rows on each page, and you're likely a lot happier.

    Monitor which indexes are getting rebuilt EVERY time; consider those for dropping fillfactor - they probably have rows added or enlarged "in the middle" regularly.

    If you can, I also split my maintenance by size; tiny things get rebuilt and their statistics updated much more often than big ones that take time, since it's nearly free (a few minutes during a short nightly maintenance/slowness OK time) if you have some time nightly where performance degradation or brief blocking is ok.  If you don't have that time, obviously don't do that!

    Unfortunately, the window is slightly tighter for me and there is not much I can do. I'll have to keep it within that time frame. We have more than 50+ databases and it would be difficult to baby sit each and every table and look for indexes to leave room for fill factor. My only question that I asked surfaced around what options should I chose in order to run the index maintenance job successfully without much issues in that window that I have. I would at least say that there are a few databases on which it generally spends a lot of time doing index rebuilds/reorgs and update stats with full scan. I can remove these databases off of the maintenance but then how would I handle these databases separately. I still have to run maintenance on them. Is there a script or a maintenance solution that you'll use which can collect the stats way ahead of the maintenance schedule and in case if it runs during that window and doesn't finish during that tighter time frame it can collect those metrics in a table and work its way out by defragging where it left so it won't have to do everything all over again.

  • ffarouqi - Tuesday, January 9, 2018 10:58 AM

    Nadrek - Saturday, January 6, 2018 2:52 PM

    I would start by only doing rebuilds - especially if you're on Enterprise Edition and that MAXDOP = 8 is helping you more than MAXDOP = 1 would.  I agree with the other posters; reorganize is a waste.  It has one benefit over rebuild - if you stop it partway through, some of its work remains.

    An easy thing is that you can also try tuning the MAXDOP - is 8 too high?  I'd guess that MAXDOP 3 or 4 would deliver nearly all of the performance at a much lower CPU cost.  It's certainly at the upper limit of what I'd do.  If you have dedicated, separated disks - or have databases on 100% flash storage - you can experiment with running two lower maxdop index maintenance jobs in parallel, and see if the aggregate result is superior.  If you're on shared spinning disks, expect it to get worse instead.

    Do make sure you're doing statistics maintenance, as Jeff said.

    More importantly, while I don't agree with the "turn off index maint" part of Jeff's statement, I 100% agree with FILLFACTOR maintenance and care, to the point that years ago I started changing the DEFAULT fillfactor to less than 100%, on the premise that it's an exceptional case where 100 is ideal for most indexes across the board, not a normal case.  Leave a little room for new/larger (VARCHAR) rows on each page, and you're likely a lot happier.

    Monitor which indexes are getting rebuilt EVERY time; consider those for dropping fillfactor - they probably have rows added or enlarged "in the middle" regularly.

    If you can, I also split my maintenance by size; tiny things get rebuilt and their statistics updated much more often than big ones that take time, since it's nearly free (a few minutes during a short nightly maintenance/slowness OK time) if you have some time nightly where performance degradation or brief blocking is ok.  If you don't have that time, obviously don't do that!

    Unfortunately, the window is slightly tighter for me and there is not much I can do. I'll have to keep it within that time frame. We have more than 50+ databases and it would be difficult to baby sit each and every table and look for indexes to leave room for fill factor. My only question that I asked surfaced around what options should I chose in order to run the index maintenance job successfully without much issues in that window that I have. I would at least say that there are a few databases on which it generally spends a lot of time doing index rebuilds/reorgs and update stats with full scan. I can remove these databases off of the maintenance but then how would I handle these databases separately. I still have to run maintenance on them. Is there a script or a maintenance solution that you'll use which can collect the stats way ahead of the maintenance schedule and in case if it runs during that window and doesn't finish during that tighter time frame it can collect those metrics in a table and work its way out by defragging where it left so it won't have to do everything all over again.

    I have a weekly 4-hour window for index maintenance on a 1.8TB database. Prior to my adventure to roll my own scripts, the full index job implemented by the vendor took 8 to 9 hours. They simply chose to rebuild everything, even archive tables that no one will ever query against. Here is what I did.

    Create 3 tables:
    1. base table:  This table keeps track of every table and index, page count, current fragmentation level. It is also provisioned to hold statistics like start and end times of reindex (reorg too but I gave up on that), previous page count, previous fragmentation level (prior to current reindex job). This table is updated weekly during job estimate, to capture new page counts as well as newly added tables and indexes.
    2. job table: This table keeps track of reindex job scheduling and execution. For instance, it will contain target database name, beginning and ending jobstep id's, job start and end times, estimated duration and actual duration, and total number of indexes that will be indexed during the next run.
    3. job detail table: For each job, a detailed step is generated to for every index that needs to be rebuilt. It keeps track of page count, fragmentation level, estimate duration, start and end times, actual duration, command used (originally I had rebuild and reorg command types).

    Create 2 jobs.
    Estimate job: Every Friday at noon, an estimate job is run. This job checks fragmentation level of every single index. Based on fragmentation level, it populates the base table, generates a new job and create an entry for every index to be rebuilt in job detail table. If the index was previously rebuilt, the previous duration would be retrieved from the base table. This piece of info is used as the time estimate.

    Index rebuild job: On Friday night, during maintenance window, the commands from job detail table are executed. As they are executed, start and end times and actual duration is recorded in both base table and job detail table. Of course, job table is also updated so at any time I know exactly which index is being rebuilt, if I care to check.

    This process will overtime populate the base table with actual rebuild durations. So the weekly estimate will gradually become more accurate. At this moment the actually seems to be within 30-min from my estimate.

    If you or anyone is interested to try I can script out everything to share. I've love to hear any suggestions on the design and SQL scripts.

  • ffarouqi - Tuesday, January 9, 2018 10:58 AM

    Nadrek - Saturday, January 6, 2018 2:52 PM

    I would start by only doing rebuilds - especially if you're on Enterprise Edition and that MAXDOP = 8 is helping you more than MAXDOP = 1 would.  I agree with the other posters; reorganize is a waste.  It has one benefit over rebuild - if you stop it partway through, some of its work remains.

    An easy thing is that you can also try tuning the MAXDOP - is 8 too high?  I'd guess that MAXDOP 3 or 4 would deliver nearly all of the performance at a much lower CPU cost.  It's certainly at the upper limit of what I'd do.  If you have dedicated, separated disks - or have databases on 100% flash storage - you can experiment with running two lower maxdop index maintenance jobs in parallel, and see if the aggregate result is superior.  If you're on shared spinning disks, expect it to get worse instead.

    Do make sure you're doing statistics maintenance, as Jeff said.

    More importantly, while I don't agree with the "turn off index maint" part of Jeff's statement, I 100% agree with FILLFACTOR maintenance and care, to the point that years ago I started changing the DEFAULT fillfactor to less than 100%, on the premise that it's an exceptional case where 100 is ideal for most indexes across the board, not a normal case.  Leave a little room for new/larger (VARCHAR) rows on each page, and you're likely a lot happier.

    Monitor which indexes are getting rebuilt EVERY time; consider those for dropping fillfactor - they probably have rows added or enlarged "in the middle" regularly.

    If you can, I also split my maintenance by size; tiny things get rebuilt and their statistics updated much more often than big ones that take time, since it's nearly free (a few minutes during a short nightly maintenance/slowness OK time) if you have some time nightly where performance degradation or brief blocking is ok.  If you don't have that time, obviously don't do that!

    Unfortunately, the window is slightly tighter for me and there is not much I can do. I'll have to keep it within that time frame. We have more than 50+ databases and it would be difficult to baby sit each and every table and look for indexes to leave room for fill factor. My only question that I asked surfaced around what options should I chose in order to run the index maintenance job successfully without much issues in that window that I have. I would at least say that there are a few databases on which it generally spends a lot of time doing index rebuilds/reorgs and update stats with full scan. I can remove these databases off of the maintenance but then how would I handle these databases separately. I still have to run maintenance on them. Is there a script or a maintenance solution that you'll use which can collect the stats way ahead of the maintenance schedule and in case if it runs during that window and doesn't finish during that tighter time frame it can collect those metrics in a table and work its way out by defragging where it left so it won't have to do everything all over again.

    If you don't have the time to come up with correct FILL FACTORs, then at least stop doing index maintenance (but DO continue to rebuild stats when needed) on the indexes that have a 0/100% FILL FACTOR that aren't based on an ever ascending key (typically an IDENTITY, SEQUENCE, or date/time) because it's a never ending, totally non-productive battle (much like doing a "shrink file" every night) that is actually causing performance problems in the form of "bad" page splits during the day.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • RandomStream - Tuesday, January 9, 2018 11:35 AM

    ffarouqi - Tuesday, January 9, 2018 10:58 AM

    Nadrek - Saturday, January 6, 2018 2:52 PM

    I would start by only doing rebuilds - especially if you're on Enterprise Edition and that MAXDOP = 8 is helping you more than MAXDOP = 1 would.  I agree with the other posters; reorganize is a waste.  It has one benefit over rebuild - if you stop it partway through, some of its work remains.

    An easy thing is that you can also try tuning the MAXDOP - is 8 too high?  I'd guess that MAXDOP 3 or 4 would deliver nearly all of the performance at a much lower CPU cost.  It's certainly at the upper limit of what I'd do.  If you have dedicated, separated disks - or have databases on 100% flash storage - you can experiment with running two lower maxdop index maintenance jobs in parallel, and see if the aggregate result is superior.  If you're on shared spinning disks, expect it to get worse instead.

    Do make sure you're doing statistics maintenance, as Jeff said.

    More importantly, while I don't agree with the "turn off index maint" part of Jeff's statement, I 100% agree with FILLFACTOR maintenance and care, to the point that years ago I started changing the DEFAULT fillfactor to less than 100%, on the premise that it's an exceptional case where 100 is ideal for most indexes across the board, not a normal case.  Leave a little room for new/larger (VARCHAR) rows on each page, and you're likely a lot happier.

    Monitor which indexes are getting rebuilt EVERY time; consider those for dropping fillfactor - they probably have rows added or enlarged "in the middle" regularly.

    If you can, I also split my maintenance by size; tiny things get rebuilt and their statistics updated much more often than big ones that take time, since it's nearly free (a few minutes during a short nightly maintenance/slowness OK time) if you have some time nightly where performance degradation or brief blocking is ok.  If you don't have that time, obviously don't do that!

    Unfortunately, the window is slightly tighter for me and there is not much I can do. I'll have to keep it within that time frame. We have more than 50+ databases and it would be difficult to baby sit each and every table and look for indexes to leave room for fill factor. My only question that I asked surfaced around what options should I chose in order to run the index maintenance job successfully without much issues in that window that I have. I would at least say that there are a few databases on which it generally spends a lot of time doing index rebuilds/reorgs and update stats with full scan. I can remove these databases off of the maintenance but then how would I handle these databases separately. I still have to run maintenance on them. Is there a script or a maintenance solution that you'll use which can collect the stats way ahead of the maintenance schedule and in case if it runs during that window and doesn't finish during that tighter time frame it can collect those metrics in a table and work its way out by defragging where it left so it won't have to do everything all over again.

    I have a weekly 4-hour window for index maintenance on a 1.8TB database. Prior to my adventure to roll my own scripts, the full index job implemented by the vendor took 8 to 9 hours. They simply chose to rebuild everything, even archive tables that no one will ever query against. Here is what I did.

    Create 3 tables:
    1. base table:  This table keeps track of every table and index, page count, current fragmentation level. It is also provisioned to hold statistics like start and end times of reindex (reorg too but I gave up on that), previous page count, previous fragmentation level (prior to current reindex job). This table is updated weekly during job estimate, to capture new page counts as well as newly added tables and indexes.
    2. job table: This table keeps track of reindex job scheduling and execution. For instance, it will contain target database name, beginning and ending jobstep id's, job start and end times, estimated duration and actual duration, and total number of indexes that will be indexed during the next run.
    3. job detail table: For each job, a detailed step is generated to for every index that needs to be rebuilt. It keeps track of page count, fragmentation level, estimate duration, start and end times, actual duration, command used (originally I had rebuild and reorg command types).

    Create 2 jobs.
    Estimate job: Every Friday at noon, an estimate job is run. This job checks fragmentation level of every single index. Based on fragmentation level, it populates the base table, generates a new job and create an entry for every index to be rebuilt in job detail table. If the index was previously rebuilt, the previous duration would be retrieved from the base table. This piece of info is used as the time estimate.

    Index rebuild job: On Friday night, during maintenance window, the commands from job detail table are executed. As they are executed, start and end times and actual duration is recorded in both base table and job detail table. Of course, job table is also updated so at any time I know exactly which index is being rebuilt, if I care to check.

    This process will overtime populate the base table with actual rebuild durations. So the weekly estimate will gradually become more accurate. At this moment the actually seems to be within 30-min from my estimate.

    If you or anyone is interested to try I can script out everything to share. I've love to hear any suggestions on the design and SQL scripts.

    This looks promising. Could you please share the script in case if you don't mind. I believe this is what I am after. Hopefully, this would solve all my problems. In case if you don't want to share it in the forum I can provide you my email address to send the details to me separately. Again, thank you so much.

  • ffarouqi - Tuesday, January 9, 2018 12:43 PM

    RandomStream - Tuesday, January 9, 2018 11:35 AM

    ffarouqi - Tuesday, January 9, 2018 10:58 AM

    Nadrek - Saturday, January 6, 2018 2:52 PM

    I would start by only doing rebuilds - especially if you're on Enterprise Edition and that MAXDOP = 8 is helping you more than MAXDOP = 1 would.  I agree with the other posters; reorganize is a waste.  It has one benefit over rebuild - if you stop it partway through, some of its work remains.

    An easy thing is that you can also try tuning the MAXDOP - is 8 too high?  I'd guess that MAXDOP 3 or 4 would deliver nearly all of the performance at a much lower CPU cost.  It's certainly at the upper limit of what I'd do.  If you have dedicated, separated disks - or have databases on 100% flash storage - you can experiment with running two lower maxdop index maintenance jobs in parallel, and see if the aggregate result is superior.  If you're on shared spinning disks, expect it to get worse instead.

    Do make sure you're doing statistics maintenance, as Jeff said.

    More importantly, while I don't agree with the "turn off index maint" part of Jeff's statement, I 100% agree with FILLFACTOR maintenance and care, to the point that years ago I started changing the DEFAULT fillfactor to less than 100%, on the premise that it's an exceptional case where 100 is ideal for most indexes across the board, not a normal case.  Leave a little room for new/larger (VARCHAR) rows on each page, and you're likely a lot happier.

    Monitor which indexes are getting rebuilt EVERY time; consider those for dropping fillfactor - they probably have rows added or enlarged "in the middle" regularly.

    If you can, I also split my maintenance by size; tiny things get rebuilt and their statistics updated much more often than big ones that take time, since it's nearly free (a few minutes during a short nightly maintenance/slowness OK time) if you have some time nightly where performance degradation or brief blocking is ok.  If you don't have that time, obviously don't do that!

    Unfortunately, the window is slightly tighter for me and there is not much I can do. I'll have to keep it within that time frame. We have more than 50+ databases and it would be difficult to baby sit each and every table and look for indexes to leave room for fill factor. My only question that I asked surfaced around what options should I chose in order to run the index maintenance job successfully without much issues in that window that I have. I would at least say that there are a few databases on which it generally spends a lot of time doing index rebuilds/reorgs and update stats with full scan. I can remove these databases off of the maintenance but then how would I handle these databases separately. I still have to run maintenance on them. Is there a script or a maintenance solution that you'll use which can collect the stats way ahead of the maintenance schedule and in case if it runs during that window and doesn't finish during that tighter time frame it can collect those metrics in a table and work its way out by defragging where it left so it won't have to do everything all over again.

    I have a weekly 4-hour window for index maintenance on a 1.8TB database. Prior to my adventure to roll my own scripts, the full index job implemented by the vendor took 8 to 9 hours. They simply chose to rebuild everything, even archive tables that no one will ever query against. Here is what I did.

    Create 3 tables:
    1. base table:  This table keeps track of every table and index, page count, current fragmentation level. It is also provisioned to hold statistics like start and end times of reindex (reorg too but I gave up on that), previous page count, previous fragmentation level (prior to current reindex job). This table is updated weekly during job estimate, to capture new page counts as well as newly added tables and indexes.
    2. job table: This table keeps track of reindex job scheduling and execution. For instance, it will contain target database name, beginning and ending jobstep id's, job start and end times, estimated duration and actual duration, and total number of indexes that will be indexed during the next run.
    3. job detail table: For each job, a detailed step is generated to for every index that needs to be rebuilt. It keeps track of page count, fragmentation level, estimate duration, start and end times, actual duration, command used (originally I had rebuild and reorg command types).

    Create 2 jobs.
    Estimate job: Every Friday at noon, an estimate job is run. This job checks fragmentation level of every single index. Based on fragmentation level, it populates the base table, generates a new job and create an entry for every index to be rebuilt in job detail table. If the index was previously rebuilt, the previous duration would be retrieved from the base table. This piece of info is used as the time estimate.

    Index rebuild job: On Friday night, during maintenance window, the commands from job detail table are executed. As they are executed, start and end times and actual duration is recorded in both base table and job detail table. Of course, job table is also updated so at any time I know exactly which index is being rebuilt, if I care to check.

    This process will overtime populate the base table with actual rebuild durations. So the weekly estimate will gradually become more accurate. At this moment the actually seems to be within 30-min from my estimate.

    If you or anyone is interested to try I can script out everything to share. I've love to hear any suggestions on the design and SQL scripts.

    This looks promising. Could you please share the script in case if you don't mind. I believe this is what I am after. Hopefully, this would solve all my problems. In case if you don't want to share it in the forum I can provide you my email address to send the details to me separately. Again, thank you so much.

    I do not mind sharing it here but first let's get it working for you as we may have to go back and forth and do some clean-up. Once it is working for you I can document it and share here. Let me see if I can PM you from here.

  • 1) I don't know why anyone hasn't asked the obvious question yet: What is the server you are running all this on? Please provide details, especially on CPU, RAM and IO PERFORMANCE capabilities. Also, what exact edition and build of SQL Server?

    2) What schedule are you running defrag under? Are there overlapping jobs (including other stuff such as data loads, extracts, backups, checkdb, etc)?

    3) Have you reviewed various tuning metrics such as IO stalls and done a wait stats analysis to find and fix bottlenecks?3) If you are asking questions like this and are responsible for managing that much data I must REALLY REALLY recommend that you hire a professional to a) give your entire system a performance review and b) help you understand your maintenance needs and get all of that set up correctly. I am absolutely confident that this will pay HUGE dividends.

    Best,
    Kevin G. Boles
    SQL Server Consultant
    SQL MVP 2007-2012
    TheSQLGuru on googles mail service

  • TheSQLGuru - Wednesday, January 10, 2018 9:55 AM

    1) I don't know why anyone hasn't asked the obvious question yet:

    BWAAA-HAAA!!! 😉 If they're doing index maintenance based on % of Fragmentation alone, then it doesn't really matter how good or bad their machine is, which is why I haven't asked. 😉

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Jeff Moden - Wednesday, January 10, 2018 4:17 PM

    TheSQLGuru - Wednesday, January 10, 2018 9:55 AM

    1) I don't know why anyone hasn't asked the obvious question yet:

    BWAAA-HAAA!!! 😉 If they're doing index maintenance based on % of Fragmentation alone, then it doesn't really matter how good or bad their machine is, which is why I haven't asked. 😉

    I should point out that you are being QUITE silly with your FILLFACTOR nonsense!! No one bothers with that - EVER. :crazy: And yet it is SO VERY DAMN IMPORTANT that EACH AND EVERY index has the FILLFACTOR (actually ALL of the CREATE INDEX options) INTELLIGENTLY set for ITS data and access patterns!!! Well, it's important if you want an optimal system anyway. 

    Best,
    Kevin G. Boles
    SQL Server Consultant
    SQL MVP 2007-2012
    TheSQLGuru on googles mail service

  • TheSQLGuru - Wednesday, January 10, 2018 8:16 PM

    Jeff Moden - Wednesday, January 10, 2018 4:17 PM

    TheSQLGuru - Wednesday, January 10, 2018 9:55 AM

    1) I don't know why anyone hasn't asked the obvious question yet:

    BWAAA-HAAA!!! 😉 If they're doing index maintenance based on % of Fragmentation alone, then it doesn't really matter how good or bad their machine is, which is why I haven't asked. 😉

    I should point out that you are being QUITE silly with your FILLFACTOR nonsense!! No one bothers with that - EVER. :crazy: And yet it is SO VERY DAMN IMPORTANT that EACH AND EVERY index has the FILLFACTOR (actually ALL of the CREATE INDEX options) INTELLIGENTLY set for ITS data and access patterns!!! Well, it's important if you want an optimal system anyway. 

    Heh... I love it when people do index maintenance of 0/100% Fill Factor indexes at 5%.  It reminds me of shrinking a database file every day.  So much fun in so much time. 😉  Then really fun part is that the daily page splits are just starting to slow down/level off and then they start the whole mess over that night by doing the reorg or rebuild.  In other words, the index maintenance causes massive bad page splits that last the WHOLE DAY and this is just ONE index!

    Here are the first 30 days (I'm writing a presentation and a series of articles on all this) of a non-ever-increasing index with different Fill Factors.  The Red saw tooth pattern is the 0/100% fill factor.  The lines represent the number of pages the index contains at any given point in time.  If the lines go up, page splits happened to make the page counts go up.  The Light Blue Line is when the index is based on an ever-increasing column and is an indication of only "good" page splits.  The Green line is if you do no index maintenance at all.  The Orange Line is ReOrgs... totally useless, total waste of time.

    data:image/png;base64,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

    Like I said, the Green line is the line where no defragmentation was done and it formed a "Natural Fill Factor" of 68%.  There are almost no "bad" page splits associated with it, either, because of the "Natural Fill Factor" that it formed.

    And this was based on a wide clustered index using almost the worst thing possible as the index key... a random GUID. 😛

    The chart is based on inserting 1,000 items (random GUIDs except for the Light Blue line, which was presorted GUIDs) every simulated hour for 10 hours per day with nightly maintenance possible as indicated in the legend of the chart.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Does anyone here besides me implement partitioning on indexes just for taking advantage of incremental reorgs and re-indexing? It depends on the access patterns and chosen partitioning key, but at least in my case only the latest couple of partitions are run hot with inserts and updates, and the older partitions are relatively static.

    "Do not seek to follow in the footsteps of the wise. Instead, seek what they sought." - Matsuo Basho

  • Eric M Russell - Thursday, January 11, 2018 7:23 AM

    Does anyone here besides me implement partitioning on indexes just for taking advantage of incremental reorgs and re-indexing? It depends on the access patterns and chosen partitioning key, but at least in my case only the latest couple of partitions are run hot with inserts and updates, and the older partitions are relatively static.

    I do the same as you.  They're audit tables, which qualifies them as "temporal WORM" tables.  When a month ends, that's the only time I rebuild the indexes for that month and I do it in a strange fashion to pack all of the indexes at a 100% fill factor with virtually no freespace trapped in the partition so that I can make it a Read_Only File Group for purposes of not backing up older partitions every night.  I only backup the current (active) month and the next month (which is empty until it becomes current).

    As for tables that have active rows in every partition all the time, the only reason why I'd do such a thing might be to make piece-meal restores possible.  Partitioning provides no particular advantages for code performance over a monolithic table and I've taken to simply not doing general index maintenance (I do rebuild stats on a very regular basis, though) over the last 2 years and, especially on large monolithic tables, I've taken to using an untraditional method to keep from blowing out the MDF file with unwanted/unnecessary freespace during some rather surgical rebuilds (especially if it's a large clustered index).  I've found that ReOrgs are mostly useless, blow out the log file, and take way too long so I stick with index rebuilds using the ONLINE option. (of course, available only in the Expensive Edition).

    I'll also state that most of the Clustered Indexes we have never get fragmented because the key is based on a narrow, unique, immutable, ever-increasing value.  After two years of no general index maintenance, we have found a couple of clustered indexes that suffered physical fragmentation (page fullness) beyond what is expected due to updates of variable length columns and we've handled those using the more surgical method of defragging those, especially if they have ever increasing keys.

    Disclaimer... most of our tables are less than 500GB.  We have one (on a telephone system and it's partitioned) that's over a Terra-Byte, about a 2 dozen between 250GB and 500GB and the rest fall into the less (frequently much less) than 100GB area.  Even our area code table comes into the "only" 4GB range.  So, we're not dealing with true monster size tables here.  We do have something less than 2000 tables even on our "big" databases so nothing real crazy there, either.  Our main business server weighs in with only about 3.2 TB of data across all the databases.

    --Jeff Moden


    RBAR is pronounced "ree-bar" and is a "Modenism" for Row-By-Agonizing-Row.
    First step towards the paradigm shift of writing Set Based code:
    ________Stop thinking about what you want to do to a ROW... think, instead, of what you want to do to a COLUMN.

    Change is inevitable... Change for the better is not.


    Helpful Links:
    How to post code problems
    How to Post Performance Problems
    Create a Tally Function (fnTally)

  • Eric M Russell - Thursday, January 11, 2018 7:23 AM

    Does anyone here besides me implement partitioning on indexes just for taking advantage of incremental reorgs and re-indexing? It depends on the access patterns and chosen partitioning key, but at least in my case only the latest couple of partitions are run hot with inserts and updates, and the older partitions are relatively static.

    I advise that to clients on Enterprise Edition of SQL Server (which is very few).

    Best,
    Kevin G. Boles
    SQL Server Consultant
    SQL MVP 2007-2012
    TheSQLGuru on googles mail service

Viewing 15 posts - 16 through 30 (of 32 total)

You must be logged in to reply to this topic. Login to reply