Ytelsen til database - drevne applikasjoner er ofte avhengig av at din SQL Server programvare, og forsinkelser eller tidsavbrudd kan oppstå for en rekke årsaker. Maskinvare eller minne flaskehalser , blokkerte poster eller problematiske prosedyrer kan alle spille en rolle i SQL ytelsesproblemer. Mens feilsøking mest SQL Server problemer krever administrator -tilgang og database kunnskap , finne problemet spørringer og optimalisere både server og database vil forhindre flere problemer nedover veien . Årsaker
Fordi timeouts og ytelsesproblemer kan stamme fra en rekke årsaker , må du utvikle en systematisk feilsøking strategi for å finne og fikse et problem. Microsoft anbefaler at du begynne å teste ved hjelp av SQL Profiler , som logger serverens handlinger slik at du kan isolere problemet . For detaljer om å sette opp SQL Profiler for å utføre et spor , se lenke i Resources . SQL Server 2012 inkluderer også et brukergrensesnitt for utvidet Arrangementer Profiler , som vil fullstendig ta plassen til SQL Profiler i fremtidige versjoner .
Blokkering
Mest timeout problemer oppstår på grunn av blokkert poster. Blokkering oppstår når en tilkobling låser en rekord som en annen tilkobling må låse med en annen lås type. Blokkering er faktisk normal oppførsel , men kan føre til forsinkelser når saktegående spørringer er også blokkert , er en indeks mangler eller i visse andre forhold . Mens standard serveren vil vente på ubestemt tid for en blokkert rekord, administratorer ofte bruke " LOCK_TIMEOUT "-innstillingen for å forhindre serveren forsinkelser . For å finne ut om serveren er å ha problemer med å blokkere , kjører du følgende lagret prosedyre når din server opplever typisk belastning : en
exec sp_who
Se i produksjonen for påmeldinger enn 0 i " ; blk "-kolonnen . Hvis de finnes, kan du bruke SQL Profiler utgang til null på saktegående spørringer som kan være årsaken til blokkering.
Bad Execution Plan
når serveren kjører en spørring , bruker den tilgjengelige data for å optimalisere hvordan det går spørringen . Noen ganger serveren gjetter feil , noe som resulterer i en dårlig optimalisering plan . Hvis dårlig plan er lastet inn i cache, kan den kjøre om og om igjen , sakker hver spørring betydelig eller timing ut . Ved hjelp av data fra SQL Profiler eller SQL Query Analyzer , kan du finne saktegående spørsmål og stille dem slik at de kjører raskere .
System Flaskehalser
System ytelse kan også påvirke ytelsen til SQL Server og forårsake tidsavbrudd . Å fastslå om systemet er under last problemer , kjører Performance Monitor og se etter høyere enn vanlig CPU-bruk eller lengre enn vanlig I /O -forespørsler. Som med blokkerte poster, vil matchende den økte belastningen med data fra SQL Profiler hjelpe deg null på spørsmål , samleplater eller andre prosedyrer som tar store mengder ressurser . Hvis justering prosedyrene er umulig, må du forbedre serverens RAM , prosessorkraft eller disk ytelse.