sql >> Database teknologi >  >> RDS >> Oracle

Tuning af SQL

For ikke så længe siden gav jeg en tutorial om Forklar plan til vores applikationsudviklingspersonale. Et spørgsmål, der dukkede op, var, hvordan beslutter jeg mig for, hvilke SQL-sætninger der skal justeres? Jeg bruger et par forskellige tilgange og finder SQL tuning kandidater fra forskellige vinkler.

  1. Jeg udfører rutinemæssigt kodegennemgange på SQL-sætninger, der rammer vores database. Jeg udnytter min erfaring til hurtigt at se på en SQL-sætning, der er ny eller er blevet væsentligt ændret for at beslutte, om jeg skal undersøge SQL'en yderligere. For eksempel, hvis en forespørgsel på en tabel søger på en PK- eller Unique-kolonne, så kan jeg være ret sikker på, at den vil køre hurtigt. Hvis SQL-sætningen ser suspekt ud for mig, vil jeg køre den gennem Explain Plan og/eller time sætningen for at sikre, at den kører tilstrækkeligt.
  2. Jeg har fået Oracles Enterprise Manager til at advare mig om ressourcestrid i vores testdatabasesystem. Alle SQL-sætninger, jeg gik glip af under kodegennemgang, kan nogle gange findes her. Hvis jeg får en advarsel om ressourcestridighed, vil jeg hoppe videre og se, om en SQL-sætning eller to forårsager et problem. Dette er min sidste chance for at fange SQL-sætninger, før de rammer produktionen.
  3. Jeg bruger Ignite til Oracle. Dette produkt er fra Confio, men Confio er nu en del af Solarwinds. Normalt tilslutter jeg ikke sælgerens produkter, men jeg vil gøre en undtagelse i dette tilfælde. Det, jeg godt kan lide ved Ignite, er, at jeg sender en rapport til mig hver mandag. Rapporten indeholder Top N lovovertrædere baseret på ventetid. Det tager mig sekunder at se på denne rapport. Jeg leder efter de store søjler i rapporten. I eksemplet på skærmbilledet nedenfor kan du se en blå bjælke, der straks fanger din opmærksomhed. Tallet til højre er en id-værdi, og hvis du klikker på det, kan du få SQL-teksten. Dette er en fantastisk måde at identificere de SQL-sætninger, der skal justeres. Det er super hurtigt og super nemt.

Som du kan se, forsøger jeg at finde problematisk SQL, efterhånden som de udvikles, når de er i vores testsystem, og selv efter at de rammer produktionen.


  1. Sådan får du input fra brugeren under kørsel

  2. programmæssig kontrol af åben forbindelse i JDBC

  3. 5 gode grunde til at downloade og bruge Microsoft Access-skabeloner

  4. Tilføjelse af flere parameteriserede variabler til en database i c#