Welcome to Sign in | Help
in Search

Stergere numar mare de inregistrari dintr-o tabela

Last post 01-06-2010, 1:59 PM by MihaiBejenariu. 8 replies.
Sort Posts: Previous Next
  •  12-22-2009, 11:18 PM 7922

    Stergere numar mare de inregistrari dintr-o tabela

    Am o tabela care are 400k randuri si in urma unui delete sterg 300k randuri. Pe aceasta tabela am 2 indecsi care "satisfac" toate cererile pe aceasta tabela, dar dupa acest delete nu mai merge nimic.

    Am incercat sa reconstruiesc indecsii pe aceasta tabela si sa actualizez statisticile, dar tot am probleme cand interoghez alte tabele care se joineaza cu aceasta tabela.

    Ce sugestii/posibilitati am a.i. query-urile sa mearga la fel ca inainte de stergere?

    Am vazut o solutie cu o copiere a randurilor intr-o tabela temporara, apoi truncate table si copiere randuri inapoi. Este recomandat asa ceva?

    Sunt pe SQL-Server 2005. Baza de date are setat recovery model "simple".
  •  12-23-2009, 8:39 AM 7923 in reply to 7922

    Re: Stergere numar mare de inregistrari dintr-o tabela

    Poti descrie exact problemele?
    Poti trimite structura tabelei, a indecsilor, query-ul care "nu merge", planurile de executie pentru cele 2 cazuri?
  •  12-23-2009, 10:20 AM 7925 in reply to 7922

    Re: Stergere numar mare de inregistrari dintr-o tabela

  •  12-23-2009, 12:48 PM 7926 in reply to 7923

    Re: Stergere numar mare de inregistrari dintr-o tabela

    Sunt 4-5 tabele si vreo 15 proceduri stocate care fac niste verificari triviale (dar multe!) si niste update-uri punctuale.
    Dupa stergerea randurilor dintr-o tabela, se observa o degradare a performantei pe aceste proceduri, cu un factor de 3x.

    Am sa incerc sa identific care este query-ul/query-urile care sunt cu probleme, ...
    Totusi ma gandeam ca ar fi trebuit sa existe un "best practice" in acest caz.
  •  12-23-2009, 7:15 PM 7927 in reply to 7926

    Re: Stergere numar mare de inregistrari dintr-o tabela

    Atentie la parameter Sniffing .
    nu stiu daca te ajuta ,dar incearca sa declari variabile locale , care preiau valorile din parametrii proceduri.Si foloseste variabilele respective
  •  12-24-2009, 4:13 AM 7928 in reply to 7926

    Re: Stergere numar mare de inregistrari dintr-o tabela

    MihaiBejenariu:

    Am sa incerc sa identific care este query-ul/query-urile care sunt cu probleme, ...
    Totusi ma gandeam ca ar fi trebuit sa existe un "best practice" in acest caz.


    Absolut exista un 'best practice': Termina de identificat query-urile cu probleme. Bafta!

    http://rusanu.com
  •  12-25-2009, 6:56 PM 7929 in reply to 7928

    Re: Stergere numar mare de inregistrari dintr-o tabela

    Probabil ca indexsi se defragmenteaza in urma operatiunii de stergere si ar trebui facut un rebuild la ei.Din sql management studio du-te pe index click dreapta si Propeties, vezi ce grad de defragmentare ai pe acei indexsi ,daca e mai mare de 30% ar trebui facut rebuild la indexsi.
    Secolul XXI ori va fi religios ori nu va fi deloc
  •  01-05-2010, 11:08 AM 7942 in reply to 7922

    Re: Stergere numar mare de inregistrari dintr-o tabela

    Eu recomand sa faci un plan de mentenanta la baza de date date pe care o folosesti(Management-Mtnce plan)  in care sa introduci si o defragmentare de index-i.
  •  01-06-2010, 1:59 PM 7947 in reply to 7929

    Re: Stergere numar mare de inregistrari dintr-o tabela

    Am gasit un best practice aici:
    http://technet.microsoft.com/en-us/library/ms189858.aspx

    Pe scurt, aflu gradul de fragmentare:

    SELECT object_name(S.object_id), I.[name], S.avg_fragmentation_in_percent
    FROM
        sys.dm_db_index_physical_stats(DB_ID(@tableName), OBJECT_ID(@tableName), NULL, NULL , NULL) S
        INNER JOIN sys.indexes I ON I.object_id = S.object_id AND I.index_id = S.index_id

    Dc. gradul de fragmentare > 5% si < 30% trebuie facut ALTER INDEX REORGANIZE (doar sunt re-ordonate leaf level pages)
    Dc. gradul de fragmentare > 30% trebuie facut ALTER INDEX REBUILD (adica indecsii sunt recreati).


    Multumesc tuturor pentru sugestii, suport si idei.
View as RSS news feed in XML
Powered by Community Server (Commercial Edition), by Telligent Systems