Vedligeholdelse af en højtydende SQL Server er afgørende ikke kun for din organisations drift, men også for dine kunder. Når dine servere er langsomme til at reagere - eller slet ikke reagerer - mister du forretning. Her er tre nøgleområder, du skal overvåge nøje for at sikre, at din SQL Server-ydeevne er optimal, og måder at forbedre ydeevnen på, hvis dine målinger viser, at du har et problem.
Indekser
Hvis dine indekser fungerer godt, bidrager de til et hurtigt, problemfrit kørende system. Men hvis dine indekser lider af nogen af disse almindelige lidelser, kan du opleve, at din SQL Server-ydelse er negativt påvirket.
Metrik til overvågning:Fyldningsfaktor
Fyldfaktor er en indstilling i SQL Server, der instruerer indekser til at fylde hver side X procent. Det virker intuitivt, at du gerne vil fylde hver side 100 procent, men i virkeligheden kan overfyldning af sider forårsage sideopdelinger. Hvis en administrator tilføjer en ekstra række til en hel side, skubber den nye række omkring halvdelen af de eksisterende rækker til en ny side, og den nye række føjes til bunden af den første side.
Sideopdelinger kan forårsage ydeevneproblemer på grund af det øgede antal I/O-operationer og potentialet for fragmentering. Men for meget plads på en side kan også skade ydeevnen, fordi ressourcer bliver brugt unødigt.
For at få de bedste resultater fra dine fyldfaktorindstillinger skal du ikke angive en værdi for hele systemet. Se på dine indekser individuelt og indstil fyldfaktor på et passende niveau for hver. For eksempel har indekser, der ofte er fragmenterede, brug for en anden fyldfaktorværdi end indekser, der næsten aldrig bruges.
Metrik til overvågning:fragmentering
Indeksfragmentering opstår, når brugere tilføjer og sletter poster. At flytte rundt på ting er en normal del af en databases daglige drift, men over tid påvirker fragmentering ydeevnen. Fragmentering kan forårsage et par problemer:
- For meget blank plads på for mange sider gør scanninger langsommere og bruger unødigt hukommelse
- Nye sider tilføjes ude af drift, så det tager længere tid for serveren at finde data
Når fragmentering begynder at påvirke ydeevnen, skal du køre Rebuild eller Reorganize for at rydde op i de fragmenterede indekser. Ved at køre Rebuild oprettes et nyt indeks og fjerne det ekstra tomme felt. Reorganize bringer bladsiderne i orden, så serveren nemmere kan finde dataene.
Buffer-cache
Når SQL Server kan læse sider i buffercache, vil din responstid være hurtigere. Ydeevne lider, når serveren er nødt til at gå til disk for at finde en side, fordi den skal gennemgå en række trin, før den gemmer siden til buffer og derefter læser den. Der er et par målinger, du kan spore, som vil hjælpe med at holde buffercachen kørende med maksimal ydeevne.
Metrik til overvågning:sidelevetid
Sidelevetid (PLE) er, hvor længe en side forbliver i buffercachen uden at blive kaldt, før den sendes tilbage til disken. Forøgelse af PLE vil forbedre ydeevnen, men den bruger også hukommelse, der kan være nødvendig til andre funktioner. Hvis du skal justere PLE, skal du finde ud af, hvor meget hukommelse du kan bruge uden at påvirke ydeevnen et andet sted.
Metric til overvågning:buffer cache hit ratio
Buffer cache hit ratio er procentdelen af sider placeret i bufferpuljen i forhold til alle sideanmodninger. Buffer-cache-hitforholdet skal være over 90 for den bedste ydeevne (dvs. SQL Server behøver ikke at læse fra disk). Vær forsigtig, når du analyserer dine buffercache-hitforholdsdata. Et lille fald i forholdet indikerer muligvis ikke et reelt problem. Analyser dataene i forbindelse med PLE for at afgøre, om der eksisterer et faktisk ydelsesproblem.
Forespørgselsoptimering
Langsomme og underpræsterende forespørgsler er et af de mest almindelige SQL Server-ydeevneproblemer. Der er mange mulige årsager til, at dine forespørgsler ikke kører godt, så det kan være svært at udpege en præcis årsag. Men der er et par ting, du kan prøve tidligt i din undersøgelse, som kan forbedre forespørgselsydeevnen med minimal indsats.
Metrik til overvågning:indeksscanning
Kontrol af din SQL Servers tilstand bør være en fast del af dine DBA-opgaver. Når forespørgsler kører langsomt, skal du bruge lidt ekstra tid på forespørgselsoptimeringsværktøjet. En vigtig ting at kontrollere er, om SQL Server-indeksscanning har nogle problemer, du skal løse.
En anden potentiel præstationsdræber er indeksscanning, der kører hyppigere, end den behøver. Indeksscanning tager meget længere tid end indekssøgning, fordi forespørgslen skal scanne hver række og lede efter nyttige data. Konfigurer din forespørgselsoptimering, så den søger indekser oftere, end den scanner dem.
Omskrivning af en problematisk forespørgsel er en anden måde at øge ydeevnen på. Nogle gange vil forenkling af forespørgsler fjerne den del, der får forespørgslen til at hænge sammen. Du kan også prøve at tilføje indekser for at fremskynde forespørgsler, men dette fungerer bedre i nogle tilfælde end andre.
Tilføjelse af indekser er en god løsning til felter involveret i søgning, gruppering eller sortering; ofte tilgåede felter; og felter med unikke værdier. Det er generelt ikke effektivt at tilføje indekser på felter med duplikerede værdier såsom ja/nej eller for små tabeller.
Overvågning af SQL Server-ydelse er afgørende for at vedligeholde højtydende databaser. At holde din SQL Server kørende med tophastighed kan kun opnås gennem flittig opmærksomhed på ydeevnemålinger. Tilføj de metrics, der er diskuteret ovenfor, til din vedligeholdelsestjekliste for at identificere og rette problemer med SQL Server-ydeevne tidligt.