Jeg har arvet en vedligeholdelsesplan, der gør følgende:
- Oprydning af gamle data
- Kontrollerer DB-integritet
- Udfører sikkerhedskopier af database og transaktionslog
- Omorganiserer vores indekser
- Opdateringsstatistikker
- Slet gamle sikkerhedskopier og vedligeholdelsesplanfiler
Af vedligeholdelsesplanen på 23 minutter tager opdatering af statistikker svimlende 13 minutter. I denne periode på 13 minutter er adgang til databasen blokeret (eller i det mindste replikering fra denne DB til vores andre er sat på pause).
Mit spørgsmål er:
Hvornår skal vi være Opdatering af statistikken, og hvorfor?
Dette virker som den slags ting, vi bør gøre sjældnere end hver dag. Jeg prøver at få os ud af “bare fordi” tankegangen med at gøre unødvendigt Vedligeholdelse.
Kommentarer
- Hvor ofte / hvordan nogen rækker indsættes / opdateres / slettes? For mig er dette den afgørende faktor.
- @JNK Vi indsætter ~ 70.000 rækker om dagen på tværs af hele DB. Opdater ~ 100 rækker om måneden.
- 1 – Dette er mere relevant, hvis vi ved TABEL ved, hvor mange rækker og 2 – som en procentdel. 70k rækker om dagen i en tabel på 1m er meget anderledes end i en tabel på 500m
- Jeg vil anbefale at bruge nogle ting som ola.hallengren.com / … denne løsning genopbygger / reorganiserer kun og opdaterer, hvad der er brug for på denne måde. Du kan muligvis forkorte den tid, din vedligeholdelsesplan tager, og også spare et hul, masser af logplads ..
Svar
Hvis du ikke har vedligeholdelsesvinduet til det, er opdatering af statistik dagligt sandsynligvis lidt overkill . Især hvis du har aktiveret automatisk opdateringsstatistik for databasen. I dit oprindelige indlæg sagde du, at brugerne ser en forringelse af ydeevnen på grund af denne vedligeholdelsesplan. Er der ingen anden tid til at køre denne vedligeholdelse plan? Intet andet vindue? Jeg kan se, at din plan omfatter omorganisering af indeks, hvornår genopbygger du indekser? Når denne handling sker, opdateres statistikken automatisk (forudsat at den ikke er slået fra i dex).
Præcis hvor ofte du skal opdatere statistikker, afhænger i høj grad af, hvor meget datamodifikation dine indekser og data modtager . Hvis der er meget lidt ændringer (INSERT
, UPDATE
, DELETE
) til dataene, så kunne du have en mere sjælden tidsplan for opdateringsstatistikjobbet.
En måde at finde ud af, om dine statistikker er forældede, er at se på udførelsesplanerne, og om du anslår, at rækker i høj grad adskiller sig fra dine faktiske returnerede rækker så er det en god indikation af, at intervallet skal forøges. I dit tilfælde går du den anden vej, og en smule prøve kan være i orden for dig. Opdater statistik ugentligt, og hvis du begynder at se fortællings tegn på uaktuelle statistikker, så gå derfra.
Hvis du bruger automatisk opdateringsstatistik til din database, se denne reference for tærsklen for, hvornår statistikker opdateres.
Kommentarer
- Vi genopbygger indekserne en gang om ugen.
- @ Onion-Knight Så opdaterer du også statistikker en gang om ugen, når du genopbygger dine indekser . Det kunne være tilstrækkeligt, hvis du ' genopbygger et tæppeindeks, der genopbygges i hele databasen.
Svar
Hvornår skal opdateres statistik?
hvis og kun hvis statistik for automatisk opdatering -funktionen er ikke god nok til dine krav. Jeg mener, hvis statistik for automatisk oprettelse og automatisk opdatering er TIL, og du får en dårlig forespørgselsplan, fordi statistikkerne ikke er nøjagtige eller aktuelle, kan det være en god ide at have kontrol over oprettelse og opdatering af statistikker. men hvis du har det godt med din SQL-serverydelse og udførelsestider for forespørgsel.
så foreslår jeg at stoppe Opdateringsstatistik kommando fra din Vedligeholdelsesplaner
opdatering af statistik er vigtig og nyttig 1. gør det muligt for SQL Server-forespørgselsoptimeringsværktøjet at producere gode forespørgselsplaner, mens udviklings- og administrationsomkostninger holdes lave 2. Statistik bruges af forespørgselsoptimeringsværktøjet at estimere selektiviteten af udtryk og dermed størrelsen på mellemliggende og endelige forespørgselsresultater. 3.Gode statistikker giver optimeren mulighed for nøjagtigt at vurdere omkostningerne ved forskellige forespørgselsplaner og derefter vælge en plan af høj kvalitet
Hvis du vil opdatere statistikker manuelt, skal du først vide Når statistikker opdateres automatisk
Hvis SQL Server-forespørgselsoptimeringsværktøjet kræver statistik for en bestemt kolonne i en tabel, der har gennemgået en betydelig opdatering aktivitet siden sidste gang, statistikkerne blev oprettet eller opdateret, opdaterer SQL Server automatisk statistikken ved at sample kolonneværdierne (ved hjælp af statistik over automatisk opdatering). Den automatiske opdatering af statistikken udløses af forespørgseloptimering eller ved udførelse af en kompileret plan, og den involverer kun et undersæt af de kolonner, der henvises til i forespørgslen. Statistikker opdateres før kompilering af forespørgsler, hvis AUTO_UPDATE_STATISTCS_ASYNC er FRA
her er gode artikler, der taler om, når opdateringsstatistikker udløses i SQL-server
- fra simple-talk sektion 13. Hvornår udløses automatisk opdatering til statistik?
- support.microsoft Sektion: Automatisering af autostatsbestemmelse
- msdn.microsoft sektion: Vedligeholdelse af statistik i SQL Server 2008
efter at vide, hvornår statistik udløses, hjælper det dig med at beslutte, hvornår du skal opdatere statistik manuelt
for at vide mere om statistik & dens virkning på ydeevne, jeg anbefaler BrentOzar og Kimberly i sqlskills meget gode blogs & bloggere .