Random index corruption

  • Hi all,

    I'm having random issues of poor performance with a DB of 40 Gb.

    It has more than 1200 tables but when I execute a reindex on a table (named MOV_MAG) with over one million or records, the issues are solved for some time, but they return after few weeks.

    I don't want to schedule a reindex of that table every day, I would like to find where is the cause of these issues.

    Some infos of the server:

    It is a virtual machine Installed on hyper-v server

    It is a dedicated SQL server, no other software are running

    There are 3 dedicated phisical cores for 3 virtual processors.

    There are 8Gb of reserved ram, 2gb for the system and 6gb for SQL Server

    There are 2 virtual disks drives

    The first drive is 30Gb (20Gb used) dedicated for the system (10gb free) running win2008R2

    The second drive is 100Gb for the data (60gb used)

    There is one virtual network adapter 1000Mbits/s and the phisical adapter is fiber optic.

    The DB Server version is MS SQL 2008.

    Usually there are 30 users connected.

    The DB was started twelve years ago and this issue is started one year ago and I'm still trying to find a solution without results. 🙁

    Can someone help me please?

    Thank you in advance

    Claudio (from Italy)

  • Why cant you reindex daily? Cant you get maintenance windows for reindexing? Also are you do update stats on this table?

  • I've already scheduled a weekly re index of all this DB and I can do a re index of that table every time I want if it is necessary, but I don't want if I'm not forced to do it, it is a wrong way I guess (or a patch at least).

    I don't want to schedule a reindex on daily basis because I assume that a DB index should work correctly when the record is wrote, and not by re indexing a table again and again. I think that it is an useless waste of system resources.

    I can get maintenance windows and the updates are done every time a record is wrote but I'm not so sure of the second because I cannot see the software which is writing these records.

    Do you have a suggestion to see that?

    Thanks

  • Index maintenance should be a regular thing, indexes get fragmented for many different reasons, I recommend reading up on indexes and fragmentation, some good links below.

    http://www.sqlservercentral.com/stairway/72399/

    http://sqlinthewild.co.za/index.php/2008/10/20/what-is-fragmentation/

  • You should consider reindexing as per their fragmentation level. Its not a one which we simply decide to do. Please go through links provided by anthony.

  • The post title mentioned corruption, but the contents mention performance. Which is it? Do you have random index corruption or do you have poor performance?

    Typically when an index rebuild fixes performance problems, the index fragmentation was not the problem. Often the index rebuild wasn't necessary at all and an update statistics would have sufficed.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • reguitti (12/5/2012)


    Hi all,

    I'm having random issues of poor performance with a DB of 40 Gb.

    It has more than 1200 tables but when I execute a reindex on a table (named MOV_MAG) with over one million or records, the issues are solved for some time, but they return after few weeks.

    I don't want to schedule a reindex of that table every day, I would like to find where is the cause of these issues.

    That's not index corruption... that's just normal stuff that happens depending on what's going on.

    You haven't mentioned... is it a gui, report, or stored procedure task that reindexing supposedly fixes?

    --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)

  • I use the command

    DBCC DBREINDEX(MOV_MAG,' ')

    in a scheduled job, using MSSQL management studio gui.

    I run it with a weekly schedulation, but I start it "by hand" when the issue appear.

    The thing which is giving me some perplexity is that before the upgrade to a new version of the software which is using this DB, there was a complete maintenance plan, running every week (also with reindex) and it was enough for the DB, and the DB has worked flawlessly for more than ten years.

    Anyway I will read surely the stairway suggestions and the fragmentation explaination from the links above, and probably I will try to write a job which will be started if the fragmentation will be higher than a percent.

    Other suggestions and observations will be appreciated.

    Thanks guys!

  • reguitti (12/5/2012)


    I use the command

    DBCC DBREINDEX(MOV_MAG,' ')

    That's deprecated and has been for about 7 years. Look up ALTER INDEX

    The thing which is giving me some perplexity is that before the upgrade to a new version of the software which is using this DB, there was a complete maintenance plan, running every week (also with reindex) and it was enough for the DB, and the DB has worked flawlessly for more than ten years.

    Data growth.

    As I said earlier, I doubt the problem is fragmentation. Far more likely to be statistics-related.

    Gail Shaw
    Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
    SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability

    We walk in the dark places no others will enter
    We stand on the bridge and no one may pass
  • I'm curious, when did you go to the virtual server? Also, has the database been growing all of this time? Finally, what else is running on the physical server?

    Steve Jimmo
    Sr DBA
    “If we ever forget that we are One Nation Under God, then we will be a Nation gone under." - Ronald Reagan

  • reguitti (12/5/2012)


    The thing which is giving me some perplexity is that before the upgrade to a new version of the software which is using this DB...

    Not perplexing at all. Someone wrote some code that relies more heavily on statistics or has become more sensitive to a thing known as "Parameter Sniffing". It happens and, if it's 3rd party software, you don't have many choices. Either get them to "fix" it or you need to deal with it, which might require you to rebuild the indexes more often than you have in the past.

    --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)

Viewing 11 posts - 1 through 10 (of 10 total)

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