sql >> Databasteknik >  >> RDS >> Oracle

Tuning SQL

För inte så länge sedan gav jag en handledning om Explain Plan för vår applikationsutvecklingspersonal. En fråga som kom upp var hur jag ska gå tillväga för att bestämma vilka SQL-satser som behöver finjusteras? Jag använder några olika tillvägagångssätt och hittar SQL-inställningskandidater från olika vinklar.

  1. Jag utför rutinmässigt kodgranskning av SQL-satser som träffar vår databas. Jag utnyttjar min erfarenhet för att snabbt titta på en SQL-sats som är ny eller har modifierats avsevärt för att avgöra om jag behöver undersöka SQL ytterligare. Till exempel, om en fråga i en tabell söker på en PK- eller Unique-kolumn, kan jag vara ganska säker på att den kommer att köras snabbt. Om SQL-satsen ser misstänkt ut för mig kommer jag att köra den genom Explain Plan och/eller tajma satsen för att säkerställa att den körs tillräckligt.
  2. Jag har Oracles Enterprise Manager som varnar mig för resurskonflikt i vårt testdatabassystem. Alla SQL-satser jag missade under kodgranskning kan ibland hittas här. Om jag får en varning om resurskonflikt kommer jag att hoppa på och se om en SQL-sats eller två orsakar problem. Det här är min sista chans att fånga SQL-satser innan de når produktionen.
  3. Jag använder Ignite för Oracle. Denna produkt är från Confio, men Confio är nu en del av Solarwinds. Normalt sett ansluter jag inte säljarens produkter, men jag gör ett undantag i det här fallet. Det jag gillar med Ignite är att jag får en rapport via e-post varje måndag. Rapporten innehåller de N-överträdarna baserat på väntetid. Det tar mig sekunder att titta på den här rapporten. Jag letar efter de stora staplarna i rapporten. I exemplet på skärmdumpen nedan kan du se en blå stapel som omedelbart fångar din uppmärksamhet. Siffran till höger är ett id-värde och om du klickar på det kan du få upp SQL-texten. Detta är ett utmärkt sätt att identifiera de SQL-satser som behöver finjusteras. Det är supersnabbt och superenkelt.

Som du kan se försöker jag hitta problematisk SQL när de utvecklas, när de finns i vårt testsystem och även efter att de når produktionen.


  1. jQuery UI Sorterbart, skriv sedan ordning i en databas

  2. Återgå till readline version 6.x i Homebrew för att fixa Postgresql?

  3. MySQL in the Cloud - Online Migration From Amazon RDS to EC2 Instance:Part One

  4. Hur väljer man den första raden för varje grupp i MySQL?