Ik “heb een onderhoudsplan geërfd dat het volgende doet:
- Oude gegevens opschonen
- Controleert de integriteit van de database
- Voert database- en transactielogboekback-ups uit
- Reorganiseert onze indexen
- Werkt statistieken bij
- Verwijdert oude back-ups en onderhoudsplanbestanden
Van het onderhoudsplan van 23 minuten duurt het bijwerken van de statistieken maar liefst 13 minuten. Gedurende deze periode van 13 minuten wordt de toegang tot de database geblokkeerd (of in ieder geval replicatie van deze database naar onze anderen is gepauzeerd).
Mijn vraag is:
Wanneer moeten we De statistieken bijwerken, en waarom?
Dit lijkt iets dat we minder vaak moeten doen dan elke dag. Ik probeer ons uit de gewoon omdat-gedachte te halen om onnodig te doen Onderhoud.
Opmerkingen
- Hoe vaak / hoe worden rijen ingevoegd / bijgewerkt / verwijderd? Voor mij is dit de doorslaggevende factor.
- @JNK We voegen ~ 70.000 rijen per dag in over de hele database. Werk ~ 100 rijen per maand bij.
- 1 – Dit is relevanter als we door TABLE weten hoeveel rijen, en 2 -als een percentage. 70.000 rijen per dag in een tafel van 1m is heel anders dan in een tafel van 500m
- Ik zou aanraden om iets te gebruiken als ola.hallengren.com / … deze oplossing herbouwt / reorganiseert en werkt alleen bij wat nodig is, op deze manier kunt u de tijd die uw onderhoudsplan in beslag neemt verkorten en ook veel logruimte besparen.
Answer
Als je er geen onderhoudsvenster voor hebt, is het dagelijks bijwerken van statistieken waarschijnlijk een beetje overdreven . Vooral als u Statistieken automatisch bijwerken heeft ingeschakeld voor de database. In uw oorspronkelijke bericht zei u dat gebruikers een prestatievermindering zien als gevolg van dit onderhoudsplan. Is er geen andere tijd om dit onderhoud uit te voeren? plan? Geen ander venster? Ik zie dat uw plan een reorganisatie van de index omvat. Wanneer bouwt u indexen opnieuw op? Wanneer die bewerking plaatsvindt, worden de statistieken automatisch bijgewerkt (op voorwaarde dat dit niet is uitgeschakeld voor de in dex).
Hoe vaak u statistieken precies moet bijwerken, hangt sterk af van hoeveel gegevensaanpassing uw indexen en gegevens ontvangen . Als er heel weinig wijziging is (INSERT
, UPDATE
, DELETE
), dan zou u een minder frequent schema kunnen hebben voor het bijwerken van statistieken.
Een manier om erachter te komen of uw statistieken verouderd zijn, is door naar de uitvoeringsplannen te kijken en of uw geschatte rijen sterk verschillen van uw werkelijke geretourneerde rijen dan is dat een goede indicatie dat het interval moet worden verhoogd. In jouw geval ga je de andere kant op en kan een beetje van de proef op zijn plaats zijn. Werk de statistieken wekelijks bij, en als je de veelbetekenende tekenen van verouderde statistieken begint te zien, ga dan verder.
Als u Statistieken automatisch bijwerken voor uw database gebruikt, raadpleegt u deze referentie voor de drempel wanneer statistieken worden bijgewerkt.
Opmerkingen
- We herbouwen de indexen één keer per week.
- @ Onion-Knight Dan werk je ook de statistieken één keer per week bij wanneer je je indexen opnieuw opbouwt . Dat zou voldoende kunnen zijn als u ‘ een algemene index opnieuw opbouwt in de database.
Antwoord
Wanneer statistieken bijwerken?
als en slechts als statistieken voor automatisch bijwerken functie is niet goed genoeg voor uw vereisten. Ik bedoel, als automatisch maken en automatisch bijwerken van statistieken AAN zijn en je krijgt een slecht queryplan omdat de statistieken niet nauwkeurig of actueel zijn, dan is het misschien een goed idee om controle te hebben over het maken en bijwerken van statistieken. maar als je het goed vindt met de prestaties van je sql-server en de uitvoeringstijden van querys.
dan raad ik aan de Updates Statistics commando van uw Onderhoudsplannen
het bijwerken van statistieken is belangrijk en nuttig 1. stelt de SQL Server-query-optimizer in staat om consistent goede queryplannen te produceren, terwijl de ontwikkelings- en administratiekosten laag blijven 2. Statistieken worden gebruikt door de query-optimizer om de selectiviteit van uitdrukkingen te schatten, en dus de grootte van tussenliggende en uiteindelijke queryresultaten. 3.Met goede statistieken kan de optimizer de kosten van verschillende queryplannen nauwkeurig inschatten en vervolgens een plan van hoge kwaliteit kiezen.
Als u statistieken handmatig wilt bijwerken, moet u eerst weten: Wanneer statistieken automatisch worden bijgewerkt
Als het SQL Server-queryoptimalisatieprogramma statistieken nodig heeft voor een bepaalde kolom in een tabel die een substantiële update heeft ondergaan activiteit sinds de laatste keer dat de statistieken zijn gemaakt of bijgewerkt, werkt SQL Server automatisch de statistieken bij door de kolomwaarden te bemonsteren (door automatische update-statistieken te gebruiken). De automatische update van statistieken wordt geactiveerd door query-optimalisatie of door uitvoering van een samengesteld plan, en het betreft slechts een subset van de kolommen waarnaar in de query wordt verwezen. Statistieken worden bijgewerkt voordat de query wordt gecompileerd als AUTO_UPDATE_STATISTCS_ASYNC is uitgeschakeld.
hier zijn leuke artikelen die spreken over wanneer updatestatistieken worden geactiveerd in SQL-server
- uit simple-talk Sectie 13. Wanneer wordt de automatische update naar statistieken geactiveerd?
- support.microsoft Sectie: Autostats-bepaling automatiseren
- msdn.microsoft sectie: statistieken bijhouden in SQL Server 2008
nadat u weet wanneer statistieken worden geactiveerd, kunt u beslissen wanneer u de statistieken handmatig wilt bijwerken
om meer te weten over statistieken & het effect op de prestaties raad ik aan BrentOzar en Kimberly in sqlskills zeer goede blogs & bloggers .