Performance Tuning i SQL
Tuning af SQL-ydelseer et maraton og ikke en sprint. At afværge ydeevneforringelse kommer ned til konsekvent langsigtet tuning. Det øjeblik, hvor ydeevnen begynder at halte bagud, vil dine brugere bemærke.
Ydeevnejustering hjælper dig med at undgå tragedien med utilfredse kunder og levere en bedre brugeroplevelse. I denne artikel skal vi se på hvad Tuning af SQL-ydelse er, og nogle områder du bør være opmærksom på, når du forsøger at forbedre din servers ydeevne, herunder:
- Brug af et SQL-overvågningsværktøj til at overvåge ydeevne
- Forbedring af indekser
- SQL Server deadlocks
- Reduktion af forespørgselskørselstid
Hvad er SQL Performance Tuning?
SQL ydeevne tuning er processen medforbedring af ydeevnen af SQL-sætninger. Du vil sikre dig, at SQL-sætninger kører så hurtigt som muligt. Hurtige og effektive udsagn optager færre hardwareressourcer og yder bedre. I modsætning hertil vil en uoptimeret ineffektiv erklæring tage længere tid at fuldføre og optage mere computerkraft.
Ineffektiv brug af computerkraft betyder, at databasen vil tage længere tid at svare på brugeranmodninger. I praksis betyder det, at når en bruger interagerer med grænsefladen, vil responstiden være højere, da databasen forsøger at finde den nødvendige information. Netværksadministratorer og udviklere bruger jævnligt ydeevnejustering til at forbedre databasens ydeevne og opretholde en førsteklasses brugeroplevelse.
Hvad forårsager dårlig SQL Server-ydelse?
Der er mange grunde til, at en SQL-server kan køre langsomt. Faktorer fra langsomme forespørgsler til ydeevneflaskehalse, virtualiseret ressourcestrid og hardwarebegrænsninger bidrager alle til dårlig ydeevne. Det er dog komplekst at finde årsagen til en langsom server på grund af den store liste over potentielle syndere.
Det meste af tiden er dårlig ydeevne relateret til dårligt skrevne forespørgsler og indeksering, hvilket gør ineffektiv brug af ressourcer snarere end hardwarebegrænsninger. Desværre kan det være svært at finde ud af, hvad der forårsager problemet uden en betydelig investering af tid og kræfter.
For at fremskynde den diagnostiske proces med at opdage SQLs ydeevneproblemer er det tilrådeligt at bruge et præstationsovervågningsværktøj. En databasemonitor vil gøre dig i stand til at se dybere ind i årsagen til dårlig ydeevne og levere en bedre slutbrugeroplevelse for dine kunder.
Brug en SQL Performance Monitor til at overvåge ydeevne og identificere SQL-flaskehalse
SolarWinds Database Performance Analyzer (GRATIS PRØVE)
Databaseovervågningsværktøjer er afgørende for styring af SQL-ydeevne, fordi de giver dig mulighed for at lokalisere årsagen til ineffektivitet. Overvågningsværktøjer somSolarWinds Database Performance Analyzerer ideelle til at identificere almindelige problemer som SQL-flaskehalse og fremhæve årsagen til problemet.
SolarWinds Database Performance Analyzer Start 14-dages GRATIS prøveperiode
SQL-flaskehalse er et af de mest gennemgående problemer, du vil stå over for, når du administrerer databaser. Det, der gør flaskehalse vanskelige, er, at der er forskellige måder, hvorpå de kan manifesteres. Der er fire typer flaskehalse, der kan påvirke en servers ydeevne:hukommelse,disk,CPU, ognetværksig selv.
Håndtering af flaskehalse bliver endnu sværere, hvis du har flere aktive flaskehalse på samme tid. For eksempel, hvis du har begrænsede diskressourcer og hukommelse, vil du sandsynligvis også finde en højere CPU-udnyttelse.
SolarWinds Database Performance Analyzer hjælper dig med at identificere årsagen til aktive flaskehalse. PlatformensSQL præstationsanalysatorbruger data påventetyper,SQL-sætninger,aktivitet, og mere for at overvåge ydeevne i realtid. Du kan også se de ventetyper/begivenheder, der ligger bag flaskehalsene.
Til generel justering af ydeevne har du også en række forskellige vejledninger til at hjælpe dig med at tune udsagn. For eksempel er der en 'Dårligste SQL-sætninger'udsigt. Ved at have disse oplysninger ved hånden kan du begynde at foretage håndgribelige ændringer i din præstationsjusteringsstrategi og forbedre oplevelsen for dine slutbrugere.
Indstilling for at reducere forespørgselskørselstid
Som diskuteret ovenfor,forespørgsels køretider en vigtig overvejelse, når man forsøger at opretholde SQL-ydeevne, jo længere en forespørgsel kører, jo flere ressourcer skal hardwaren bruge til at behandle anmodningen. Reduktion af forespørgselskørselstiden vil give dig mulighed for at få flere kilometer ud af din hardware og understøtte bedre databaseydeevne.
Der er tre hovedfaktorer, der øger forespørgslens køretid:bordstørrelse,slutter sig til, ogsammenlægninger. Hvis en forespørgsel skal interagere med en tabel, der har for mange rækker, skal softwaren arbejde hårdere for at behandle forespørgslen. Ligeledes hvis din forespørgselslutter sig tilflere tabeller sammen vil dette påvirke ydeevnen. På samme måde kræver forespørgsler, der bruger sammenlægninger til at generere et resultat, også flere ressourcer.
Det er vigtigt at bemærke, at køretiden for en forespørgsel også kan øges, hvis mange andre brugere kører forespørgsler på samme tid. Hver forespørgsel optager hardwareressourcer. Som en konsekvens, jo flere forespørgsler databasen forsøger at behandle, jo langsommere vil køretiden være.
Hvis du vil forbedre ydeevnen og reducere forespørgselskørselstiden, er reduktion af tabelstørrelsen en af de enkleste ting, du kan gøre. På samme måde, når du forespørger om en tidsramme, skal du holde vinduet så smalt som muligt. For eksempel, hvis du har brug for at måle databasedata over en periode, skal du vælge en kort tidsramme som en 24-timers periode, så hardwaren ikke skal behandle så meget data.
En anden ting du kan gøre er at opgradere din hukommelse. Hvis du ikke har de tilgængelige computerressourcer til at administrere en stor database, vil tuning ikke være nok til at levere god ydeevne. Opgradering af hukommelse hjælper med at sikre, at du har flere ressourcer ved hånden.
Relateret indlæg: Bedste SQL Query Builders
SQL Server dødvande
Deadlocks er et andet præstationsproblem, som netværksadministratorer og udviklere skal håndtere. Et dødvande er hvorto processer konkurrerer om adgang til en ressource. De to processer blokerer hinanden, så ingen af dem kan få adgang til ressourcen. Med andre ord er en deadlock en cyklisk afhængighed, der er forårsaget af applikationskode.
For at eliminere et dødvande på serveren skal administratoren afslutte en af processerne. SQL Server har enlåseadministratorder automatisk søger efter dødvande hvert femte sekund.
Når SQL Server registrerer en dødvande, vælger den en transaktion, der skal lukkes ned. Ved at lukke ned for en af transaktionerne ophæves deadlock, så den anden proces kan få adgang til den ressource, der oprindeligt blev blokeret.
SQL Server vælger, hvilken proces der lukkes ned baseret på en dødvandsprioritet. Deadlock-prioriteten kan indstilles af brugeren med følgende kommando:
INDSTIL DEADLOCK_PRIORITY LAV;
Der er fire prioritetsniveauer;LAV,NORMAL,HØJ,<numerisk> . LAV har værdien -5, NORMAL har værdien 0, og HØJ har værdien 5.
SQL-server afslutter processen med det laveste deadlock-prioritetsniveau. Så hvis du indtastede LOW-kommandoen for at tildele en lav prioritet til en proces, og den anden proces havde en prioritet på Normal eller HIGH, ville LOW-prioritetsprocessen blive afsluttet.
Det er vigtigt at bemærke, at løsning af deadlocks rækker langt ud over deadlock-prioriterede sektioner. Deadlocks kan være et utroligt komplekst problem at løse (især hvis du skal gennemgå applikationskoden med hjælp fra en udvikler!).
Forbedre indekser
Indekser er et nyttigt værktøj til din rådighed til at øge forespørgselseffektiviteten. Et indeks er en datastruktur, som du kan bruge til at trække information fra databasen hurtigere. For at bruge indekser til at øge ydeevnen, du ønsker at: bruge masser af indekser i tabeller, undgå indekser, der ofte opdaterer, og brugikke-klyngede indekserfor at reducere forespørgselsudførelsestiden.
For at hjælpe med processen med indeksdesign kan du brugeSQL profilerat identificere forespørgsler med subpar ydeevne.SQL profilervil fortælle dig antallet af læse- og skriveoperationer, det tager at fuldføre en forespørgsel, og hvor lang tid forespørgslen tager at fuldføre. Indlæs profileren på en fjerncomputer og find forespørgsler, der tager lang tid at fuldføre. Disse forespørgsler vil være dem, du vil justere, indtil kørselstiden falder.
Alternativt kan du brugeIndeks Tuning Wizardat anbefale indekser, som du kan bruge.Tuning Wizarder en softwareguide til SQL, som giver dig anbefalinger baseret på, hvad du ønsker at opnå. Du kan bruge de outputdata, du har fået medSQL profilerat levereIndeks Tuning Wizardmed information at overvåge. Overvåg udførelsestiden for forespørgsler og hold øje med ineffektiv drift.
Et strejf af SQL-tuning om dagen holder dårlig ydeevne væk
Brugernes forventninger til ydeevne er mere uforsonlige end nogensinde før. Det tager kun en lille forsinkelse at sende brugere til at løbe til bakkerne.Proaktivttuning af SQL-databaser er nødvendig for at eliminere latens og levere den responsive oplevelse, som moderne brugere efterspørger.
Mens overvågning af SQL-ydeevne er en løbende proces, er en af de bedste måder at starte på ved at bruge endatabaseovervågningsplatform. Databaseovervågningssoftware vil give mere synlighed og pege dig i retning af specifikke problemer, der skal forbedres.
Fra da af er der 101 måder at forbedre forespørgselsydeevnen på. Hvis du er ny til SQL, så prøv ikke at blive desillusioneret og fokuser på at lave en lille forbedring ad gangen. Hvis du starter med det grundlæggende som at reducere bordstørrelser for at opbygge din selvtillid, kan du begynde at tage mere komplicerede trin længere nede.
Ofte stillede spørgsmål om SQL Performance Tuning
Hvordan kan vi lave performance tuning i SQL?
Her er fire tips til justering af SQL-ydelse:
- Brug et SQL-overvågningsværktøj til at overvåge ydeevnen
- Forbedre indekser
- Forhindrer ressourcestop
- Reducer udførelsestiden for forespørgsler
Hvordan får jeg min SQL-forespørgsel til at køre hurtigere?
Prøv disse fire trin for at få SQL-forespørgsler til at køre hurtigere:
- Udvid serverhukommelsen
- Opdelingstabeller
- Fjern ydre samlinger
- Omorganiser joinforbindelser for at filtrere flest poster fra først
- Sørg for at forbinder hit-indekser
- Fjern jokertegn i kolonnelisten
Hvad er databaseydelsesjustering?
Indstilling af databaseydeevne involverer forbedring af databaseobjekter ved at undersøge indekser, visninger og tabelnormalisering. SQL-forespørgsler bør skrives på en måde, der gør optimal brug af databasestrukturer, såsom indekser.