Când să actualizați statisticile?

Am moștenit un plan de întreținere care face următoarele:

  • Curățați datele vechi
  • Verifică integritatea bazei de date
  • Efectuează copii de rezervă ale bazelor de date și jurnalului de tranzacții
  • Reorganizează indexurile noastre
  • Actualizări statistice
  • Ștergeți copiile de rezervă vechi și fișierele planului de întreținere

Din planul de întreținere de 23 de minute, actualizarea statisticilor durează 13 minute uluitoare. În această perioadă de 13 minute, accesul la baza de date este blocat (sau cel puțin, replicarea din acest DB către ceilalți noștri este întrerupt).

Întrebarea mea este:

Când ar trebui să fim Actualizarea statisticilor și de ce?

Acest lucru pare a fi genul de lucruri pe care ar trebui să le facem mai rar decât în fiecare zi. Încerc să ne scoatem din „doar pentru că” mentalitatea de a face lucruri inutile Întreținere.

Comentarii

  • Cât de des / cum se inserează / actualizează / șterg orice rânduri? Pentru mine, acesta este factorul decisiv.
  • @JNK Inserăm ~ 70.000 de rânduri pe zi pe întregul DB. Actualizați ~ 100 de rânduri pe lună.
  • 1 – Acest lucru este mai relevant dacă știm după TABEL câte rânduri și 2 – ca procent. 70k rânduri pe zi într-un tabel de 1m este mult diferit decât într-un tabel de 500m
  • Aș recomanda să folosiți ceva de genul ola.hallengren.com / … această soluție doar reconstruiește / reorganizează și actualizează ceea ce este necesar în acest fel, puteți reduce timpul necesar planului dvs. de întreținere și, de asemenea, economisi o mulțime de spațiu jurnal ..

Răspuns

Dacă nu aveți fereastra de întreținere pentru aceasta, actualizarea zilnică a statisticilor este probabil puțin exagerată . Mai ales dacă ați activat Statisticile de actualizare automată pentru baza de date. În postarea dvs. originală, ați spus că utilizatorii văd o degradare a performanței din cauza acestui plan de întreținere. Nu mai există timp pentru a rula această întreținere plan? Nu există altă fereastră? Văd că planul dvs. cuprinde reorganizarea indexului, când reconstruiți indexurile? Când se întâmplă acea operațiune, statisticile sunt actualizate automat (cu condiția să nu fie dezactivat pentru dex).

Exact cât de des ar trebui să actualizați statisticile depinde în mare măsură de cât de multe date primesc indexurile și datele dvs. . Dacă există foarte puține modificări (INSERT, UPDATE, DELETE) la date, atunci ați putea avea un program mai rar pentru jobul cu statistici de actualizare.

O modalitate de a afla dacă statisticile dvs. sunt învechite este să vă uitați la planurile de execuție și dacă rândurile estimate diferă mult de rândurile dvs. reale returnate atunci acesta este un bun indiciu că intervalul trebuie îmbunătățit. În cazul dvs., mergeți în sens invers și este posibil ca un pic de încercare să fie în ordine. Actualizați statisticile săptămânal și, dacă începeți să vedeți semnele povestitoare ale statisticilor învechite, mergeți de acolo.

Dacă utilizați statistici de actualizare automată pentru baza dvs. de date, consultați această referință pentru pragul actualizării statisticilor.

Comentarii

  • Reconstruim indexurile o dată pe săptămână.
  • @ Onion-Knight Apoi actualizați și statistici o dată pe săptămână când vă reconstruiți indexurile . Acest lucru ar putea fi suficient dacă ‘ efectuați o reconstruire a indexului general în baza de date.

Răspuns

Când se actualizează statisticile?

dacă și numai dacă statistici de actualizare automată caracteristica nu este suficient de bună pentru cerințele dvs. Adică dacă statisticile de creare automată și actualizare automată sunt ACTIVE și primiți un plan de interogare prost, deoarece statisticile nu sunt corecte sau actuale, atunci ar putea fi o idee bună să aveți controlul asupra creării și actualizării statisticilor. dar dacă sunteți bine cu performanța serverului SQL și cu timpul de execuție a interogării.

atunci vă sugerez oprirea Statistici de actualizări comandă din Planuri de întreținere

actualizarea statisticilor este importantă și utilă 1. permite optimizatorului de interogări SQL Server să producă în mod consecvent planuri bune de interogare, menținând costurile de dezvoltare și de administrare reduse. Statisticile sunt utilizate de optimizatorul de interogare pentru a estima selectivitatea expresiilor și, astfel, mărimea rezultatelor interogării intermediare și finale. 3.Statisticile bune permit optimizatorului să evalueze cu precizie costul diferitelor planuri de interogare și apoi să aleagă un plan de înaltă calitate


Dacă doriți să actualizați manual Statisticile, ar trebui să știți mai întâi Când Statisticile sunt actualizate automat

Dacă optimizatorul de interogare SQL Server necesită statistici pentru o anumită coloană dintr-un tabel care a suferit o actualizare substanțială activitate de la ultima dată când statisticile au fost create sau actualizate, SQL Server actualizează automat statisticile prin eșantionarea valorilor coloanei (utilizând statistici de actualizare automată). Actualizarea automată a statisticilor este declanșată de optimizarea interogării sau de executarea unui plan compilat și implică doar un subset al coloanelor menționate în interogare. Statisticile sunt actualizate înainte de compilarea interogării, dacă AUTO_UPDATE_STATISTCS_ASYNC este OFF

aici sunt articole frumoase despre care se vorbește despre declanșarea statisticilor de actualizare în serverul SQL

  1. din simplă conversație Secțiunea 13. Când se declanșează actualizarea automată la statistici?
  2. support.microsoft Secțiunea: Automatizarea determinării autostatelor
  3. secțiunea msdn.microsoft : Menținerea statisticilor în SQL Server 2008

după ce știți când se declanșează statisticile, vă va ajuta să decideți când să actualizați manual statisticile

pentru a afla mai multe despre Statistici & efectul său asupra performanței, vă recomand BrentOzar și Kimberly în sqlskills bloguri foarte bune & bloggeri .

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *