Jag har ärvt en underhållsplan som gör följande:
- Rensa gamla data
- Kontrollerar DB-integritet
- Utför säkerhetskopior av databas och transaktionslogg
- Omorganiserar våra index
- Uppdateringsstatistik
- Ta bort gamla säkerhetskopior och underhållsplanfiler
Av den 23 minuters underhållsplanen tar uppdatering av statistiken överlägset 13 minuter. Under denna 13-minutersperiod blockeras åtkomst till databasen (eller åtminstone replikering från denna DB till våra andra är pausad).
Min fråga är:
När ska vi vara Uppdatera statistiken och varför?
Det verkar som den typ av saker vi borde göra mindre ofta än varje dag. Jag försöker få oss ur ”bara för” tankesättet att göra onödigt Underhåll.
Kommentarer
- Hur ofta / hur några rader infogas / uppdateras / raderas? För mig är detta den avgörande faktorn.
- @JNK Vi infogar ~ 70 000 rader per dag över hela DB. Uppdatera ~ 100 rader i månaden.
- 1 – Detta är mer relevant om vi vet genom TABELL hur många rader och 2 – som procent. 70 000 rader per dag i en tabell på 1 m är mycket annorlunda än i en tabell på 500 m.
- Jag rekommenderar att du använder något som ola.hallengren.com / … den här lösningen bygger bara om / omorganiserar och uppdaterar vad som behövs på detta sätt. Du kan förkorta den tid som din underhållsplan tar och spara också ett hål mycket loggutrymme ..
Svar
Om du inte har underhållsfönstret för det är det troligen lite överdrivet att uppdatera statistik dagligen . Särskilt om du har aktiverat automatisk uppdateringsstatistik för databasen. I ditt ursprungliga inlägg sa du att användarna ser en försämrad prestanda på grund av denna underhållsplan. Finns det ingen annan tid att köra detta underhåll plan? Inget annat fönster? Jag ser att din plan omfattar omorganisation av index, när bygger du om index? När den operationen sker uppdateras statistiken automatiskt (förutsatt att den inte är avstängd för in dex).
Exakt hur ofta du ska uppdatera statistik beror i hög grad på hur mycket datamodifiering dina index och data får . Om det är väldigt lite modifiering (INSERT
, UPDATE
, DELETE
) till data, då kan du ha ett mer sällsynt schema för uppdateringsstatistikjobbet.
Ett sätt att ta reda på om din statistik är inaktuell är att titta på körplanerna och om du uppskattar att raderna skiljer sig mycket från dina faktiska returnerade rader då är det en bra indikation på att intervallet behöver ökas. I ditt fall går du åt andra hållet och lite prov kan vara i ordning för dig. Uppdatera statistik varje vecka, och om du börjar se berättelsens tecken på inaktuell statistik, gå därifrån. p>
Om du använder statistik för automatisk uppdatering för din databas, se denna referens för tröskeln för när statistik uppdateras.
Kommentarer
- Vi bygger om index igen en gång i veckan.
- @ Onion-Knight Sedan uppdaterar du också statistik en gång i veckan när du bygger dina index igen . Det kan vara tillräckligt om du ' gör om ett filtindex som byggs om i databasen.
Svar
När ska statistik uppdateras?
om och endast om automatisk uppdateringsstatistik -funktionen är inte tillräckligt bra för dina krav. Jag menar om statistik för automatisk skapande och automatisk uppdatering är PÅ och du får en dålig frågeplan eftersom statistiken inte är korrekt eller aktuell kan det vara en bra idé att ha kontroll över statistikskapande och uppdatering. men om du mår bra med din SQL-serverprestanda och körningstider för frågan.
föreslår jag att du stoppar Uppdateringsstatistik kommando från ditt Underhållsplaner
att uppdatera statistik är viktigt och användbart 1. gör det möjligt för SQL Server-frågoptimeringsprogrammet att producera bra frågeplaner konsekvent, samtidigt som utvecklings- och administrationskostnaderna hålls nere 2. Statistik används av frågoptimeringsprogrammet för att uppskatta selektiviteten för uttryck och därmed storleken på mellanliggande och slutliga frågeresultat. 3.Bra statistik gör att optimeraren kan exakt bedöma kostnaden för olika frågeplaner och sedan välja en högkvalitativ plan
Om du vill uppdatera statistik manuellt bör du först veta När statistik uppdateras automatiskt
Om SQL Server-frågeoptimeraren kräver statistik för en viss kolumn i en tabell som har genomgått en betydande uppdatering aktivitet sedan senaste gången statistiken skapades eller uppdaterades uppdaterar SQL Server automatiskt statistiken genom att sampla kolumnvärdena (med hjälp av statistik för automatisk uppdatering). Statistikens automatiska uppdatering utlöses av frågaoptimering eller genom körning av en sammanställd plan och den involverar endast en delmängd av de kolumner som det hänvisas till i frågan. Statistik uppdateras före sammanställning av frågor om AUTO_UPDATE_STATISTCS_ASYNC är AV
här är fina artiklar som talar om när uppdateringsstatistik utlöses i SQL-server
- från enkla samtal Avsnitt 13. När utlöses automatisk uppdatering av statistik?
- support.microsoft Avsnitt: Automatisering av autostatsbestämning
- msdn.microsoft avsnitt: Underhåll av statistik i SQL Server 2008
när du vet när statistik utlöses hjälper det dig att bestämma när du ska uppdatera statistik manuellt
för att veta mer om statistik & dess effekt på prestanda rekommenderar jag BrentOzar och Kimberly i sqlskills mycket bra bloggar & bloggare .