Udførelsen af dine database-drevne applikationer er ofte afhængige af at din SQL Server-software , og afmatning eller timeout kan opstå af en række årsager . Hardware eller hukommelse flaskehalse , blokerede optegnelser eller problematiske procedurer kan alle spille en rolle i SQL performance issues . Mens fejlfinding mest SQL Server problemer kræver administrator adgang og database viden , finde problemet forespørgsler og optimere både server og database vil forhindre flere spørgsmål nede ad vejen. Årsager
Fordi timeouts og performance problemer kan stamme fra en række forskellige årsager , er du nødt til at udvikle en systematisk fejlfinding strategi med henblik på at lokalisere og løse et problem. Microsoft anbefaler, at du begynde at teste ved hjælp af SQL Profiler , der logger din server handlinger , så du kan isolere problemet . For oplysninger om opsætning af SQL Profiler for at udføre et spor , se link i Resources. SQL Server 2012 indeholder også en brugergrænseflade til den udvidede begivenheder Profiler , som fuldstændig vil træde i stedet for SQL Profiler i fremtidige versioner .
Blokering
fleste timeout problemer opstår på grund af blokerede poster . Blokering opstår, når én forbindelse låser en rekord , at en anden tilslutning skal låses med en anden lås type. Blokering er faktisk normal adfærd , men kan forårsage afmatning , når langsomt kørende forespørgsler også blokeres, et indeks mangler eller i visse andre omstændigheder. Mens som standard serveren vil vente på ubestemt tid på en blokeret record, administratorer ofte bruge " LOCK_TIMEOUT " indstilling til at forhindre server afmatning . For at afgøre om din server har problemer med blokering, kør følgende lagrede procedure , når din server oplever typisk belastning : Hej
exec sp_who
Kig i output for tilmeldinger end 0 i " ; blk " kolonnen . Hvis de findes, kan du bruge din SQL Profiler output til nul i den langsomt kørende forespørgsler , der kan være årsag til spærringen.
Bad Execution Plan
når serveren kører en forespørgsel , det bruger tilgængelige data til at optimere hvordan det kører forespørgslen . Lejlighedsvis serveren gætter forkert , hvilket resulterer i en dårlig optimering plan . Hvis dårlig plan er indlæst i cachen, kan det køre igen og igen , bremse hver forespørgsel markant eller timing ud . Ved hjælp af data fra SQL Profiler eller SQL Query Analyzer , kan du finde langsomt kørende forespørgsler og tune dem , så de kører hurtigere .
System Flaskehalse
System ydeevne kan også påvirke ydeevnen af SQL Server og forårsage timeouts. For at afgøre om dit system er under belastning spørgsmål , køre Performance Monitor og kigge efter højere end sædvanligt CPU-forbrug eller længere end normalt I /O-anmodninger . Som med blokerede poster vil matche den øgede belastning med data fra SQL Profiler hjælpe dig nul ind på forespørgsler , samlinger eller andre procedurer under store mængder af ressourcer. Hvis justering af procedurerne er umuligt , er du nødt til at forbedre serverens RAM, processorkraft eller disk ydelse.