prestandan hos din databasdrivna applikationer är ofta beroende av att din SQL Server , och avmattning eller timeout kan uppstå av flera skäl . Hårdvara eller minne flaskhalsar , blockerade register eller problematiska förfaranden kan alla spela en roll i SQL prestandaproblem . Medan felsökning mest SQL Server frågor kräver administratörsbehörighet och databas kunskap , lokalisera problemet frågor och optimera både server och databas kommer att förhindra fler frågor på vägen . Orsaker
Eftersom timeout och problem prestanda kan bero på en mängd olika orsaker , måste du utveckla en systematisk felsökning strategi för att lokalisera och åtgärda ett problem . Microsoft rekommenderar att du börjar testa genom att använda SQL Profiler , som loggar din servers handlingar så att du kan isolera problemet . För information om hur du konfigurerar SQL Profiler för att utföra ett spår , se länk i Resources . SQL Server 2012 innehåller även ett användargränssnitt för Extended Events Profiler , som helt kommer att ta över platsen för SQL Profiler i framtida versioner .
Blocking
Mest timeout problem uppstår på grund av blockerade poster. Blockering inträffar när en anslutning låser en post som en annan anslutning måste låsa med ett annat lås typ . Blockering är faktiskt normalt beteende , men kan orsaka avmattning när långsamtgående förfrågningar också blockeras , är ett index saknas eller under vissa andra omständigheter . Även som standard på servern kommer att vänta på obestämd tid för en blockerad rekord , administratörer använder ofta " LOCK_TIMEOUT " inställning för att förhindra server nedgångar . För att avgöra om servern har problem med blockering , kör följande lagrade proceduren när din server upplever typisk belastning :
exec sp_who
Titta i utmatningen för poster än 0 i " ; blk "-kolumnen . Om de finns , kan du använda din SQL Profiler utsignal till noll på långsamtgående frågor som kan orsaka blockering .
Bad Execution Plan
när servern kör en fråga , använder det tillgängliga data för att optimera hur det går frågan . Ibland servern gissar fel , vilket resulterar i en dålig optimering plan . Om dålig plan laddas i cachen , kan det köras om och om igen , bromsa varje fråga avsevärt eller tidsgränsen . Med hjälp av data från SQL Profiler eller SQL Query Analyzer , kan du hitta långsamtgående frågor och ställa dem så att de kör snabbare .
Flaskhalsar
System prestanda kan också påverka prestanda för SQL Server och timeout orsak . För att avgöra om ditt system genomgår last frågor , köra Performance Monitor och leta efter högre än vanliga CPU-användning eller längre än vanligt I /O- förfrågningar . Som med blockerade poster , kommer att matcha den ökade belastningen med data från SQL Profiler hjälper dig noll på frågor , sammanställningar eller andra förfaranden som tar stora resurser . Om anpassning av förfarandena är omöjligt , måste du förbättra serverns RAM , processorkraft eller disk prestanda .