|
| Rebuild queries i TOAD Fra : Aino |
Dato : 05-09-01 07:22 |
|
Hejsa
Jeg har et program der baserer sig på en database i Oracle. Via Toad har
jeg adgang til denne database. For hvert projekt jeg laver i mit
program, oprettes 3 nye brugere i Oracle med henholdsvis 26, 57 og 21
tabeller. De fleste af disse tabeller ændres løbende ved brug af dette
program. Der er en lang række indexes på tabellerne, henholdsvis 61, 105
og 52 stk.
Programmets performance er ikke helt hvad det bør, og jeg har derfor
fået det råd at rebuilde mine indexes. Jeg har dog også fået at vide, at
det ikke vil have nogen effekt.
1) Hvad sker der egentlig når et index rebuildes
2) Vil det (i praksis) øge performance ved læsning af tabellerne at
rebuilde alle indexes?
3) Hvor tit (relativt) bør det i så fald gøres?
4) Findes der i Toad (evt SQLPlus80) en nem måde at rebuilde samtlige
indexes for en Oracle bruger?
--
Mvh Aino
Never trust anything that can think for itself if you can't see where it
keeps its brain. - Mr Weasley
| |
Peter Laursen (05-09-2001)
| Kommentar Fra : Peter Laursen |
Dato : 05-09-01 17:36 |
|
Aino skrev i meddelelsen <3B95C48C.53BAAA32@topsoe.dk>...
>Hejsa
>
>Jeg har et program der baserer sig på en database i Oracle.
Via Toad har
>jeg adgang til denne database. For hvert projekt jeg laver
i mit
>Programmets performance er ikke helt hvad det bør, og jeg
har derfor
>fået det råd at rebuilde mine indexes. Jeg har dog også
fået at vide, at
>det ikke vil have nogen effekt.
>
Har du checket at din Oracle instans ikke swapper? Dvs at
ram som Oracle bruger ikke swappes ud til disk?
Har du i TOAD checket Tuning/Serverstats? Dictionary cache
hit skal efter instansen har kørt et stykke tid gerne være
95% eller bedre. Buffer cache hit kan man fint få op over
99% med en applikation man selv har skrevet.
Du kan også checke explain plan for dine queries i
Tuning/SGA Trace.
>1) Hvad sker der egentlig når et index rebuildes
Over tid, ved mange insert og deletes, kan indexet blive
skævt så en søgning skal læse flere blokke, dvs lave mere
IO, end nødvendigt. En rebuild svarer til at droppe indexet
og bygge det op påny.
>4) Findes der i Toad (evt SQLPlus80) en nem måde at
rebuilde samtlige
>indexes for en Oracle bruger?
Hmm, jeg tror det ikke. Jeg ville lave et SQLPlus80 script
der gør det. Noget i stil med
spool minfil.sql
select 'Alter index ' || index_name || ' rebuild;' from
user_indexes;
spool off
kør derefter minfil.sql
/Peter
| |
Aino (06-09-2001)
| Kommentar Fra : Aino |
Dato : 06-09-01 10:46 |
|
Peter Laursen wrote:
Hej Peter, og tak for dit svar
> Har du checket at din Oracle instans ikke swapper? Dvs at
> ram som Oracle bruger ikke swappes ud til disk?
> Har du i TOAD checket Tuning/Serverstats? Dictionary cache
> hit skal efter instansen har kørt et stykke tid gerne være
> 95% eller bedre. Buffer cache hit kan man fint få op over
> 99% med en applikation man selv har skrevet.
> Du kan også checke explain plan for dine queries i
> Tuning/SGA Trace.
Whoa, der er lidt at kigge på. Nu har jeg ikke selv skrevet det program,
der skriver/læser databaserne, så jeg er ikke sikker på hvor mange
'skruer', jeg har at dreje på.
> >4) Findes der i Toad (evt SQLPlus80) en nem måde at
> rebuilde samtlige
> >indexes for en Oracle bruger?
> Hmm, jeg tror det ikke. Jeg ville lave et SQLPlus80 script
> der gør det.
I mellemtiden har jeg fundet ud af, at man i Toad kan lave en rapport,
og sætte den til (stort set) kun at medtage alle indexes for en bruger.
Med et lille script kan jeg nemt ændre denne fil til en serie
sql-statements jeg kan proppe tilbage i TOAD. Det skal naturligvis gøres
for hver bruger. Så må jeg se om det hjælper på performance.
Pudsigt, at der ikke findes en indbygget måde at rebuilde samtlige
indexes på, når det er noget der åbenbart bør gøres jævnligt.
--
Mvh Aino
Never trust anything that can think for itself if you can't see where it
keeps its brain. - Mr Weasley
| |
|
|