IBM DB2 Universal Database. Visual Explain - Veiledning



Like dokumenter
DB2. Opplæring i Visuell forklaring. DB2 versjon 9 for Linux og Windows SA

Programvareoppdateringer Brukerhåndbok

Programvareoppdateringer

Programvareoppdateringer Brukerhåndbok

Programvareoppdateringer Brukerhåndbok

Programvareoppdateringer Brukerhåndbok

Programvareoppdateringer

Programvareoppdateringer Brukerhåndbok

1. Innføring i bruk av MySQL Query Browser

Hurtigstartveiledning

HR analysen. Ny versjon Brukermal. Administratorer

Hurtigstartveiledning

Hvordan hente ut listen over et hagelags medlemmer fra Hageselskapets nye portal

Communicate SymWriter: R5. Brett og knapper

Norton Internet Security Online Brukerhåndbok

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

>>21 Datamodellering i MySQL Workbench

Flytte Lønn 5.0 fra SQL 2000 til SQL 2005 / 2008

Hurtigstartveiledning

Undersøke modellen... 3

Utplukk og sortering. Innhold

Hva er nytt i GeoGebra 3.0? Sigbjørn Hals

VMware Horizon View Client. Brukerveiledning for nedlasting, installasjon og pålogging for fjerntilgang

ThinkPad X Series. Installeringsveiledning


Samsung Universal Print Driver Brukerhåndbok

AUTOCAD Artikkelserie. Tabeller

Hurtigstartveiledning

IBM Operasjonsnavigator

Dette eksemplet forutsetter at du allerede har gjennomgått Kom i gang med tavler 1.

Excel. Kursopplegg for SKUP-skolen 2010

Metaspråket for å beskrive grammatikk

SymWriter: R6 Innstillinger, preferanser og verktøylinjer

Begynnerbok for DB2-tjenere

VS Communicator 4. Kommei gang

Bruksanvisning for publisering på

Fullstendig ytelsesbehandling

Huldt & Lillevik Ansattportal Ansattportal. Versjon

Sikkerhetsrapportering

1. SQL datadefinisjon og manipulering

Vet du hva vi kan bruke et regneark på pc-en til?

Boot Camp Installering og klargjøring

Excel. Kursopplegg for SKUP-konferansen Laget av

6105 Windows Server og datanett

Fletting en rask manual. Velg masseutsendelse i topmenyen/båndet. Klikk på velg veiviseren i bunnen

KURSMATERIELL REPORT STUDIO DEL 1 INNHOLD: Del 1: Arbeidsområdet Del 2: Spørringer Del 3: Filterknapper

Datamodellering og databaser SQL, del 2

Veiledning for oppdatering av Extensor 05 - versjon 1.16.

Communicate SymWriter: R4. Bruke handlinger

Boot Camp Installering og klargjøring

Generelt om Rapporter

En lett innføring i foreninger (JOINs) i SQL

Introduksjon til versjonskontroll av Ola Lie

IBM DB2 Universal Database. Opplæring i Business Intelligence: Utvidede leksjoner i datavarehus

Rapportmodulen i Extensor 05

Lync Denne guiden tar utgangspunkt i at Lync 2013 er installert på pcen.

Slik bruker du P-touch Transfer Manager

IBM DB2 Universal Database Personal Edition. Begynnerbok. Versjon 7 GA

Programvareoppdateringer Brukerhåndbok

Brukermanual for Quizbuilder

Trinnvis veiledning for oppdatering til Windows 8.1

Komme i gang med programmet Norgeshelsa

Bruk av OpenOffice.org 3 Writer

Tegneprogram Journeyman Scratch PDF

Hvordan komme i gang med MUSITs applikasjoner

Ajourhold av DMK i FYSAK F2.6 Kokebok Norsk institutt for skog og landskap, Steinkjer

Se gjennom hele veiledningen før du setter i gang.

Layout og publisering

Kom i gang 4: Tavler for å skrive med tekst

Hurtigstartveiledning

Hurtigstartveiledning

ThinkPad X Series. Delenummer: 67P4585. h Datamaskin. h Batteri

Brother ScanViewer-guide for ios/os X

Oppgave 1 (Opprett en database og en tabell)

Brukermanual, kartløsning

2. Beskrivelse av installasjon av SQL Server 2005 og hvordan lage databasen som trengs av administrasjonsprogrammet:

1. Installasjon og lydtilpasning

Huldt & Lillevik Lønn 5.0. Oppdatere til ny versjon

Naturbase innsynsløsning, Introduksjon til ny versjon,

Programvareoppdateringer Brukerhåndbok

ONSCREENKEYS 5. Windows XP / Windows Vista / Windows 7 / Windows 8

SMART Ink 3.0 BRUKERVEILEDNING FOR MAC OS X-OPERATIVSYSTEMET

Oppdatering av person/studentforekomster i FS mot folkeregisteret

Kort veiledning for avsendere og hentesteder

Start med å åpne programmet ved å trykke på ikonet GIMP 2 på skjermen eller under startmenyen.

Brukerveiledning for SMS fra Outlook

Bruke QuickRestore-CDen

Oppdatere, sikkerhetskopiere og gjenopprette programvare

Håndbok for restaurant og barkasse

HBF Drammen 2014 Tips og triks 1. Innhold... Side. Tips og triks

Brukerveiledning for Vesuv

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

FYLKESMANNEN I ROGALAND Kurs i spreieareal november 2015

Bytte til Excel 2010

ULTIBOARD. UltiBoard HiST 9.feb. 01

Kapittel 2 - Undersøke modellen...3

Irc-klient. Eigil Obrestad. Morten H Singstad. Kristofers Celms

9. ASP med databasekopling, del II

SIDETITTEL HURTIGSTASTERPÅ TASTATURET

Transkript:

IBM DB2 Universal Database Visual Explain - Veiledning Versjon 8

IBM DB2 Universal Database Visual Explain - Veiledning Versjon 8

Før du bruker opplysningene i denne boken og produktet det blir henvist til, må du lese Merknader. Dette dokumentet inneholder informasjon som eies av IBM. Det leveres i henhold til lisensbetingelser og er opphavsrettslig beskyttet. Informasjonen i denne håndboken omfatter ingen produktgarantier, og eventuelle merknader i denne håndboken må ikke tolkes som garantier. Du kan bestille IBM-publikasjoner elektronisk eller via IBM-representanten. v Hvis du vil bestille publikasjoner elektronisk, går du til IBM Publications Center på www.ibm.com/shop/publications/order v IBM-representanten finner du ved å gå til IBM Directory of Worldwide Contacts på www.ibm.com/planetwide Hvis du vil bestille DB2-publikasjoner fra DB2 Marketing and Sales i USA eller Canada, må du ringe 1-800-IBM-4YOU (426-4968). Når du sender informasjon til IBM, gir du IBM en ikke-eksklusiv rett til å bruke eller distribuere informasjonen på den måten IBM mener er best, uten forpliktelser i noen retning. Copyright International Business Machines Corporation 2000-2002. All rights reserved.

Innhold Om denne veiledningen........ v Environment-specific information..... vi Leksjon 1. Opprette forklarings-snapshot.. 1 Opprette forklaringstabellene....... 1 Bruke forklarings-snapshot....... 2 Opprette forklarings-snapshot for dynamiske SQL-setninger....... 3 Opprette forklarings-snapshot for statiske SQL-setninger........... 4 Det neste............. 5 Leksjon 2. Vise og bruke et tilgangsplandiagram......... 7 Vise et tilgangsplandiagram ved å velge fra en liste over tidligere forklarte SQL-setninger.. 7 Lese symbolene i et tilgangsplandiagram.. 7 Bruk zoomeskalaen til å forstørre deler av et diagram............ 8 Få flere detaljer om objektene i et diagram.. 9 Få statistikk for tabeller, indekser og tabellfunksjoner.......... 9 Få detaljer om operatorer i et diagram.. 9 Få statistikk for funksjoner...... 10 Få statistikk for tabellplasser..... 10 Få statistikk for kolonnene i en SQL-setning........... 10 Få informasjon om konfigurasjonsparameter og bindingsalternativer........ 10 Endre utseende til et diagram...... 10 Det neste............. 11 Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon.... 13 Arbeide med tilgangsplandiagrammer... 13 Kjøre en spørring uten indekser og statistikk............ 14 Samle gjeldende statistikk for tabellene og indeksene ved hjelp av runstats.... 17 Opprette indekser på kolonner som brukes til å kombinere tabeller i en spørring... 22 Opprette tilleggsindekser på tabellkolonner 27 Det neste............. 30 Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø....... 31 Arbeide med tilgangsplandiagrammer... 31 Kjøre en spørring uten indekser og statistikk............ 32 Samle gjeldende statistikk for tabellene og indeksene ved hjelp av runstats.... 35 Opprette indekser på kolonner som brukes til å kombinere tabeller i en spørring... 40 Opprette tilleggsindekser på tabellkolonner 44 Det neste............. 47 Tillegg A. Visuell forklaring - begreper.. 49 Tilgangsplan............ 49 Tilgangsplandiagram......... 49 Tilgangsplandiagram......... 51 Gruppering............ 51 Container............. 51 Kostnad............. 51 Pekerblokking........... 52 DMS-tabellplass (databasestyrt plass)... 52 Dynamisk SQL........... 53 Forklarings-snapshot......... 53 Forklarlig setning.......... 54 Forklart setning........... 54 Operand............. 54 Operator............. 54 CMPEXP............. 56 DELETE............. 56 EISCAN............. 56 FETCH.............. 56 FILTER.............. 57 GENROW............. 57 GRPBY.............. 58 HSJOIN............. 58 INSERT............. 59 IXAND............. 59 IXSCAN............. 60 MSJOIN............. 61 NLJOIN............. 61 PIPE.............. 62 RETURN............. 62 RIDSCN............. 63 RQUERY............. 63 SORT.............. 63 Copyright IBM Corp. 2000-2002 iii

TBSCAN............. 64 TEMP.............. 65 TQUEUE............. 66 UNION............. 66 UNIQUE............. 66 UPDATE............. 67 Optimalisator........... 67 Pakke.............. 67 Predikat............. 67 Klasse for optimalisering av spørring... 68 Selektivitet for predikater....... 69 Stjernekombinasjon......... 70 Statisk SQL............ 71 SMS-tabellplasser (systemstyrt plass).... 71 Tabellplass............ 71 Visuell forklaring.......... 72 Tillegg B. Alfabetisk liste over operatorer for Visuell forklaring......... 73 CMPEXP............. 73 DELETE............. 73 EISCAN............. 73 FETCH.............. 74 FILTER.............. 74 GENROW............. 75 GRPBY.............. 75 HSJOIN............. 75 INSERT............. 76 IXAND............. 76 IXSCAN............. 77 MSJOIN............. 78 NLJOIN............. 79 PIPE.............. 80 RETURN............. 80 RIDSCN............. 80 RQUERY............. 80 SORT.............. 81 TBSCAN............. 82 TEMP.............. 83 TQUEUE............. 83 UNION............. 83 UNIQUE............. 84 UPDATE............. 84 Tillegg C. DB2-begreper....... 85 Databaser............. 85 Skjemaer............. 85 Tabeller............. 86 Tillegg D. Merknader........ 87 Varemerker............ 90 Stikkordregister.......... 93 Kontakte IBM........... 95 Om programmet.......... 95 iv VE-veiledning

Om denne veiledningen Denne veiledningen inneholder en innføring i funksjonene i DB2 Visuell forklaring. Ved å fullføre leksjonene i denne veiledningen, vil du lære hvordan du kan bruke Visuell forklaring til å vise tilgangsplanen for forklarte SQL-setninger som et diagram. Du vil også lære å bruke informasjonen som er tilgjengelig fra et slikt diagram, til å justere SQL-spørringene slik at de gir bedre ytelse. Ved hjelp av optimalisatoren undersøker DB2 SQL-spørringene og finner ut hvordan du får tilgang til dataene på best mulig måte. Denne banen til dataene kalles tilgangsplanen. Ved hjelp av DB2 kan du se hva optimalisatoren har gjort, ved at du får se på tilgangsplanen som er valgt til å utføre en bestemt SQL-spørring. Du kan bruke Visuell forklaring til å vise tilgangsplanen som et diagram. Diagrammet er en visuell presentasjon av databaseobjektene som er involvert i en spørring (for eksempel tabeller og indekser.) Det omfatter også operasjonene som er utført for disse objektene (for eksempel skanninger og sorteringer), og det viser dataflyten. Du kan forbedre en spørrings tilgang til data ved å utføre ett av eller alle de følgende justeringsaktivitetene: 1. Justere tabellutformingen og omorganisere tabelldataene. 2. Opprette riktige indekser. 3. Bruke runstats-kommandoen til å gi optimalisatoren gjeldende statistikk. 4. Velge riktige konfigurasjonsparametere. 5. Velge riktige bindingsalternativer. 6. Utforme spørringer som bare henter nødvendige data. 7. Arbeide med en tilgangsplan. 8. Opprette forklarings-snapshot. 9. Bruke et tilgangsplandiagram til å forbedre en tilgangsplan. Disse ytelsesrelaterte aktivitetene samsvarer med som de blir vist i den følgende illustrasjonen. (Brutte linjer viser trinn som er nødvendige for Visuell Copyright IBM Corp. 2000-2002 v

forklaring.) DB2 5. Alternativer for klargjøring/binding 6. Spørring Optimalisator Kontrollsenter Visuell forklaring 7. Tilgangsplan 9. Tilgangsplandiagram Spørringsutføring 1. Tabeller 2. Indekser 3. Statistikk 4. Konfigurasjonsparametere 8. Forklaringssnapshot Denne veiledningen inneholder leksjoner om det følgende: v Opprette forklarings-snapshot. Dette er kravene for å vise tilgangsplandiagrammer. v Vise og manipulere et tilgangsplandiagram. v Utføre justeringsaktiviteter og utforske hvordan disse forbedrer tilgangsplanen. Merk: Ytelsesjusteringen er delt i en leksjon for databasemiljøer med enkeltpartisjon og en leksjon for partisjonerte databasemiljøer. Du kommer til å bruke eksempeldatabasen for DB2 når du arbeider med leksjonene. Se Administration Guide hvis du ikke allerede har opprettet eksempeldatabasen. Environment-specific information Information marked with this icon pertains only to enkeltpartisjonsdatabase environments. Information marked with this icon pertains only to partisjonert database environments. vi VE-veiledning

Leksjon 1. Opprette forklarings-snapshot I denne leksjonen skal du opprette forklarings-snapshot. Funksjonen for SQL-forklaring blir brukt til å registrere informasjon om systemet der en statisk eller dynamisk SQL-setning blir kompilert. Ved hjelp av den registrerte informasjonen vil du forstå strukturen og den potensielle utføringsytelsen for SQL-setningene. Et forklarings-snapshot er komprimert informasjon som blir samlet inn når en SQL-setning blir forklart. Det lagres som et stort binærobjekt (BLOB) i tabellen EXPLAIN_STATEMENT, og inneholder følgende informasjon: v Internfremstillingen av tilgangsplanen, i tillegg til operatorene, tabellene og indeksene som er brukt. v Beslutningskriterier som optimalisatoren har brukt, samt statistikk for databaseobjekter og kumulative kostnader for hver operasjon. Hvis du vil vise et tilgangsplandiagram, trenger Visuell forklaring informasjonen som ligger i et forklarings-snapshot. Opprette forklaringstabellene Når du skal opprette forklarings-snapshot, må du passe på at forklaringstabellene nedenfor finnes for bruker-iden din: v EXPLAIN_INSTANCE v EXPLAIN_STATEMENT Bruk kommandoen DB2 list tables når du skal kontrollere om de finnes. Hvis disse tabellene ikke finnes, må du opprette dem ved å bruke de følgende instruksjonene: 1. Hvis DB2 ikke allerede er startet, gir du kommandoen db2start. 2. Fra DB2-klarmeldingen i kommandolinjebehandleren knytter du deg til databasen du vil bruke. For denne veiledningen knytter du deg til SAMPLE-databasen ved hjelp av kommandoen connect to sample. 3. Opprett forklaringstabellene ved hjelp av eksempelkommandofilen EXPLAIN.DDL. Denne filen ligger i katalogen sqllib\misc. Når du skal kjøre kommandofilen, går du til denne katalogen og gir kommandoen db2 -tf EXPLAIN.DDL. Denne kommandofilen lager forklaringstabeller som har den tilknyttede bruker-iden som prefiks. Denne bruker-iden må ha CREATETAB-rettighet i databasen eller SYSADM- eller DBADM-autorisasjon. Copyright IBM Corp. 2000-2002 1

Bruke forklarings-snapshot Det finnes fire eksempel-snapshot som kan hjelpe deg å lære om Visuell forklaring. De følgende delene inneholder informasjon om hvordan du oppretter egne snapshot, men du trenger ikke å opprette egne snapshot for å arbeide med denne veiledningen. v Opprette forklarings-snapshot for dynamiske SQL-setninger v Opprette forklarings-snapshot for statiske SQL-setninger Spørringen som ble brukt til eksempel-snapshotene, viser navnet, avdelingen og inntekten for alle ansatte som ikke er ledere, og som tjener mer enn 90 % av lønnen til den best betalte lederen. SELECT S.ID,S.NAVN,O.AVDELING,LØNN+PROV FROM ORG O, STAB S WHERE O.AVDNR = S.AVD AND S.JOBB <> Leder AND S.LØNN+S.PROV > ALL( SELECT ST.LØNN*.9 FROM STAB ST WHERE ST.JOBB= Leder ) ORDER BY S.NAVN Spørringen har to deler: 1. Delspørringen (i parentes) produserer datarader som består av 90 % av lønnen til hver enkelt leder. Siden delspørringen er kvalifisert med ALL, blir bare den største verdien fra denne tabellen hentet. 2. Hovedspørringen kombinerer alle radene i ORG- og STAB-tabellene der avdelingsnumrene er de samme, JOBB ikke er lik Leder, og lønn pluss kommisjon er større enn verdien som ble returnert fra delspørringen. Hovedspørringen inneholder disse tre predikatene (sammenlikninger): 1. O.AVDNR = S.AVD 2. S.JOBB <> Leder 3. S.LØNN+S.PROV > ALL ( SELECT ST.LØNN*.9 FROM STAB ST WHERE ST.JOBB= Leder ) Disse predikatene viser til: 1. Et kombinasjonspredikat som kombinerer ORG- og STAB-tabellene der avdelingsnumrene er like 2. Et lokalt predikat på JOBB-kolonnen til STAB-tabellen 3. Et lokalt predikat på LØNN- og PROV-kolonnene til STAB-tabellen som bruker resultatet av delspørringen Slik laster du inne eksempel-snapshotene: 1. Hvis DB2 ikke allerede er startet, gir du kommandoen db2start. 2 VE-veiledning

2. Kontroller at forklaringstabellene finnes i databasen din. Følg instruksjonene under Opprette forklaringstabeller når du skal gjøre dette. 3. Koble til databasen du vil bruke. I denne veiledningen skal du koble til SAMPLE-databasen. Når du skal koble deg til SAMPLE-databasen fra CLP-klarmeldingen for DB2, gir du kommandoen connect to sample. Hvis den ikke allerede er opprettet, kan du se i avsnittet om installering av SAMPLE-databasen i Administration Guide. 4. Når du skal importere de forhåndsdefinerte snapshotene, kjører du DB2-kommandofilen VESAMPL.DDL. v v Denne filen ligger i katalogen sqllib\samples\ve. Denne filen ligger i katalogen sqllib\samples\ve\inter. Når du skal kjøre kommandofilen, går du til denne katalogen og gir kommandoen db2 -tf vesampl.ddl. v v Denne kommandofilen må kjøres fra den samme bruker-iden som ble brukt til å lage forklaringstabellene. Denne kommandofilen importerer de forhåndsdefinerte snapshotene. Den oppretter ikke tabeller eller data. Justeringsaktivitetene som beskrives senere (for eksempel CREATE INDEX og runstats), vil bli kjørt for tabeller og data i SAMPLE-databasen. Du er nå klar til å vise og bruke tilgangsplandiagrammene. Opprette forklarings-snapshot for dynamiske SQL-setninger Merk: Opplysningene om hvordan du oppretter forklarings-snapshot i denne delen, er gitt bare for informasjon. Siden det følger med eksempler på forklarings-snapshot, trenger du ikke å utføre denne oppgaven når du skal arbeide med veiledningen. Følg disse trinnene når du skal opprette et forklarings-snapshot for en dynamisk SQL-setning: 1. Hvis DB2 ikke allerede er startet, gir du kommandoen db2start. 2. Kontroller at forklaringstabellene finnes i databasen din. Følg instruksjonene under Opprette forklaringstabeller når du skal gjøre dette. 3. Fra DB2-klarmeldingen i kommandolinjebehandleren knytter du deg til databasen du vil bruke. Når du for eksempel skal koble deg til SAMPLE-databasen, gir du kommandoen connect to sample. Hvis du vil opprette SAMPLE-databasen, kan du se i avsnittet om installering av SAMPLE-databasen i Administration Guide. Leksjon 1. Opprette forklarings-snapshot 3

4. Opprett et forklarings-snapshot for en dynamisk SQL-setning ved å bruke en av disse kommandoene fra DB2-klarmeldingen i kommandolinjebehandleren (CLP). v Hvis du vil opprette et forklarings-snapshot uten å utføre SQL-setningen, kan du gi kommandoen set current explain snapshot=explain. v Hvis du vil opprette et forklarings-snapshot og utføre SQL-setningen, gir du kommandoen set current explain snapshot=yes. Denne kommandoen definerer spesialregisteret for Explain. Når det er definert, har det innvirkning på alle etterfølgende SQL-setninger. Hvis du vil ha flere opplysninger, kan du >se i delene som omhandler gjeldende forklarings-snapshot i SQL Reference. 5. Gi SQL-setningene fra DB2-klarmeldingen i kommandolinjebehandler (CLP). 6. Hvis du vil se tilgangsplandiagrammet for snapshotet, fornyer du vinduet Historikk over forklarte setninger (tilgjengelig fra Kontrollsenter), og dobbeltklikker på snapshotet. 7. Valgfritt: Hvis du vil slå av snapshot-funksjonen, gir du kommandoen set current explain snapshot=no etter at du har sendt SQL-setningene. Opprette forklarings-snapshot for statiske SQL-setninger Merk: Opplysningene om hvordan du oppretter forklarings-snapshot i denne delen, er gitt bare for informasjon. Siden det følger med eksempler på forklarings-snapshot, trenger du ikke å utføre denne oppgaven når du skal arbeide med veiledningen. Følg disse instruksjonene når du skal lage et forklarings-snapshot for en statisk SQL-setning: 1. Hvis DB2 ikke allerede er startet, gir du kommandoen db2start. 2. Kontroller at forklaringstabellene finnes i databasen din. Følg instruksjonene under Opprette forklaringstabeller når du skal gjøre dette. 3. Fra DB2-klarmeldingen i kommandolinjebehandleren knytter du deg til databasen du vil bruke. Når du for eksempel skal koble deg til SAMPLE-databasen, gir du kommandoen connect to sample. 4. Opprett et forklarings-snapshot for en statisk SQL-setning med parameteren EXPLSNAP når du binder eller klargjør applikasjonen. Du kan for eksempel gi kommandoen bind din fil explsnap yes. 5. Valgfritt: Hvis du vil se tilgangsplandiagrammet for snapshotet, fornyer du vinduet Historikk over forklarte setninger (tilgjengelig fra Kontrollsenter), og dobbeltklikker på snapshotet. 4 VE-veiledning

Hvis du vil vite hvordan du bruker parameteren EXPLSNAP for tilsvarende programmeringsgrensesnitt (APIer), kan du se under delene for hver av disse i Application Development Guide. Det neste I Leksjon 2. Vise og bruke et tilgangsplandiagram på side 7 får du lære hvordan du viser et tilgangsplandiagram, og hvordan du skal forstå innholdet. Leksjon 1. Opprette forklarings-snapshot 5

6 VE-veiledning

Leksjon 2. Vise og bruke et tilgangsplandiagram I denne leksjonen skal du bruke vinduet Tilgangsplandiagram til å vise og bruke et tilgangsplandiagram. Et tilgangsplandiagram er en grafisk representasjon av en tilgangsplan. Fra et tilgangsplandiagram kan du vise detaljene for: v tabeller (og tilknyttede kolonner) og indekser v Operatorer (for eksempel tabellsøkinger, sorteringer og kombineringer) v tabellplasser og -funksjoner Du kan vise et tilgangsplandiagram ved hjelp av disse metodene: v Velge fra en liste over tidligere forklarte setninger. v Velge fra en liste over forklarlige setninger i en pakke. v Forklare en SQL-setning dynamisk. Siden du skal arbeide med tilgangsplandiagrammer for de eksemplene på forklarings-snapshot som du lastet inn i leksjon 1, skal du velge fra en liste over tidligere forklarte setninger. Hvis du vil ha opplysninger om andre metoder for å vise tilgangsplandiagrammer, kan du se i hjelpen for Visuell forklaring. Vise et tilgangsplandiagram ved å velge fra en liste over tidligere forklarte SQL-setninger Slik viser du et tilgangsplandiagram ved å velge fra en liste over tidligere forklarte setninger: 1. Utvid objektoversikten fra Kontrollsenter til du finner SAMPLE-databasen. 2. Høyreklikk på databasen og velg Vis historikk over forklarte setninger fra objektmenyen. Vinduet Historikk over forklarte setninger blir åpnet. 3. Du kan bare vise et tilgangsplandiagram for en setning som har et forklart snapshot. Kvalifiserte setninger vil ha JA (YES) i kolonnen Forklarings-snapshot. Dobbeltklikk på posten som er identifisert som spørring nummer 1 (du må kanskje bla til høyre for å finne kolonnen Nummer på spørring). Vinduet Tilgangsplandiagram for setningen blir åpnet. Merk: Diagrammet leses fra bunnen til toppen. Det første trinnet i spørringen blir vist nederst i diagrammet, og det siste trinnet blir vist øverst. Lese symbolene i et tilgangsplandiagram Tilgangsplandiagrammet viser et tre som fremstiller strukturen til en tilgangsplan. Nodene i treet fremstiller dette: Copyright IBM Corp. 2000-2002 7

v Tabeller, vist som rektangler v Indekser, vist som ruter v Operatorer, vist som åttekanter TQUEUE-operatorer, vist som parallellogrammer v Tabellfunksjoner, vist som sekskanter For operatorer er tallet i hakeparentes til høyre for operatortypen en entydig ID for hver node. Tallet nedenfor operatortypen er den kumulative kostnaden. Bruk zoomeskalaen til å forstørre deler av et diagram Når du viser et tilgangsplandiagram, blir hele diagrammet vist, slik at du kanskje ikke er i stand til å se detaljene som skiller hver enkelt node. Fra vinduet Tilgangsplandiagram bruker du zoomeskalaen til å forstørre deler av et diagram: 1. Plasser musepekeren over den lille posisjonsviseren i zoomeskalaen på venstre side av diagrammet. 2. Venstreklikk og dra skalaen til diagrammet har det forstørrelsesnivået du ønsker. Hvis du vil se andre deler av diagrammet, bruker du blafeltet. Hvis du vil vise et stort og komplisert tilgangsplandiagram, bruker du vinduet Diagramoversikt. Du kan bruke dette vinduet for å se hvilke deler av diagrammet som vises, og zoome inn på eller bla gjennom diagrammet. Delen i zoomefeltet blir vist i tilgangsplanen. Hvis du vil bla gjennom diagrammet, plasserer du musepekeren over det uthevede området i vinduet Diagramoversikt, trykker og holder nede museknapp 1. Flytt deretter musen til du ser den delen av tilgangsplandiagrammet du ønsker. 8 VE-veiledning

Få flere detaljer om objektene i et diagram Du kan få tilgang til mer informasjon om objektene i et tilgangsplandiagram. Du kan vise dette: v Systemkatalogstatistikk for objekter, for eksempel: tabeller, indekser eller tabellfunksjoner Informasjon om operatorer, for eksempel kostnad, egenskaper og inndataargumenter Innebygde funksjoner eller brukerdefinerte funksjoner Tabellplasser kolonner det er referert til i en SQL-setning v Informasjon om konfigurasjonsparametere og bindingsalternativer (optimaliseringsparametere). Få statistikk for tabeller, indekser og tabellfunksjoner Hvis du vil vise katalogstatistikk for en enkelttabell (rektangel), en indeks (rute) eller en tabellfunksjon (sekskant) i et diagram, dobbeltklikker du på den tilhørende noden. Det blir åpnet et statistikkvindu for de valgte objektene, der du får opplysninger om statistikken som gjaldt da snapshotet ble opprettet, i tillegg til statistikken som for tiden finnes i systemkatalogtabellene. Hvis du vil vise katalogstatistikk for flere tabeller, indekser eller tabellfunksjoner i et diagram, velger du hver enkelt ved å klikke på den (fargen endres). Velg deretter Node >Vis statistikk. Det blir åpnet et statistikkvindu for hver enkelt av de valgte objektene. (Vinduene kan være stablet, og det er mulig at du må dra og slippe noen av dem for å få tilgang til alle.) Hvis posten for STATS_TIME i kolonnen Forklart inneholder posten Statistikken er ikke oppdatert, fantes det ikke statistikk da optimalisatoren opprettet tilgangsplanen. Hvis optimalisatoren trengte bestemte statistikkdata for å lage tilgangsplanen, brukte den derfor standardverdier. Hvis standardstatistikken ble brukt av optimalisatoren, blir den identifisert som (standard) i kolonne Forklart. Få detaljer om operatorer i et diagram Hvis du vil vise katalogstatistikk for en enkeltoperator (åttekant), dobbeltklikker du på den tilhørende noden. Et Operatordetaljer-vindu blir åpnet for den valgte operatoren, der denne typen informasjon vises: v Anslått kumulativ kostnad (I/U, CPU-instruksjoner og total kostnad) v Kardinalitet (det vil si det anslåtte antall rader det er søkt i) hittil v Tabeller som er brukt og kombinert hittil i planen v Kolonnene til tabellene som er brukt hittil v Predikatene som er brukt hittil, i tillegg til deres anslåtte selektivitet v Inndataargumentene for hver operator Leksjon 2. Vise og bruke et tilgangsplandiagram 9

Hvis du vil vise detaljer for flere operatorer, velger du hver enkelt ved å klikke på den (den blir uthevet). Deretter velger du Node >Vis opplysninger. Det blir åpnet et statistikkvindu for hver enkelt av de valgte objektene. (Vinduene kan være stablet, og det er mulig at du må dra og slippe noen av dem for å få tilgang til alle.) Få statistikk for funksjoner Hvis du vil vise katalogstatistikk for innebygde og brukerdefinerte funksjoner, velger du Setning >Vis statistikk >Funksjoner. Velg en eller flere poster fra listen som vises i vinduet Funksjoner, og klikk på OK. Vinduet Funksjonsstatistikk åpnes for hvert av funksjonene som er valgt. Få statistikk for tabellplasser Hvis du vil vise statistikk for tabellplasser, velger du Setning >Vis statistikk >Tabellplasser. Velg en eller flere poster fra listen som vises i vinduet Tabellplasser, og klikk på OK. Vinduet Tabellplasstatistikk åpnes for hvert av tabellplassene som er valgt. Få statistikk for kolonnene i en SQL-setning Slik henter du statistikk for kolonnene det er referert til i en SQL-setning: 1. Dobbeltklikk på en tabell i tilgangsplandiagrammet. Vinduet Tabellstatistikk blir åpnet. 2. Klikk på skjermtasten Refererte kolonner. Du får frem vinduet Refererte kolonner, som viser kolonnene i tabellen. 3. Velg en eller flere kolonner fra listen, og klikk på OK. Vinduet Statistikk for refererte kolonner åpnes for hver av kolonnene som er valgt. Få informasjon om konfigurasjonsparameter og bindingsalternativer Hvis du vil vise informasjon om konfigurasjonsparametere og bindingsalternativer (optimaliseringsparametere), velger du Setning >Vis optimaliseringsparametere fra vinduet Tilgangsplandiagram. Vinduet Optimaliseringsparametere åpnes, der du får informasjon om parameterverdiene som gjaldt da snapshotene ble laget, i tillegg til de gjeldende verdiene. Endre utseende til et diagram Slik endrer du verdiene som bestemmer hvordan et diagram ser ut: 1. Fra vinduet Tilgangsplandiagram velger du Vis > Innstillinger. Notisboken Innstillinger for tilgangsplandiagram blir åpnet. 2. Hvis du skal endre bakgrunnsfargene, velger du flippen Diagram. 3. Hvis du vil endre fargen for forskjellige operatorer, bruker du flippene Grunnleggende, Utvid, Oppdatering og Diverse. 4. Bruk flippen Operand når du skal endre fargen på tabeller, indekser eller tabellfunksjoner. 10 VE-veiledning

5. Hvis du vil velge hvilken type informasjon som blir vist i operatornodene (type kostnad eller kardinalitet, som er det anslåtte antall rader som er returnert hittil), velger du flippen Operator. 6. Hvis du vil oppgi om skjemanavn eller bruker-ider skal vises i tabellnodene, velger du flippen Operand. 7. Hvis du vil oppgi om nodene skal vises todimensjonalt eller tredimensjonalt, velger du flippen Node. 8. Hvis du vil oppdatere diagrammet med alternativene du valgte og lagre innstillingene, klikker du på Bruk. Det neste Hvis du arbeider i et databasemiljø med enkeltpartisjon, går du til Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon på side 13, der du får lære hvordan de ulike justeringsaktivitetene kan endre og forbedre en tilgangsplan. Hvis du arbeider i et partisjonert databasemiljø, går du til Kjøre en spørring uten indekser og statistikk på side 14, der du får lære hvordan de ulike justeringsaktivitetene kan endre og forbedre en tilgangsplan. Leksjon 2. Vise og bruke et tilgangsplandiagram 11

12 VE-veiledning

Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon I denne leksjonen får du lære hvordan tilgangsplanen og de tilhørende vinduene for den grunnleggende spørringen blir endret når du utfører ulike justeringsaktiviteter. Ved hjelp av en rekke eksempler og tilhørende illustrasjoner får du lære hvordan den beregnede totalkostnaden for tilgangsplanen til selv en enkel spørring, kan forbedres ved å bruke kommandoen runstats og tilføye passende indekser. Når du har arbeidet med Visuell forklaring en stund, vil du finne ut andre måter å tilpasse spørringene på. Arbeide med tilgangsplandiagrammer Ved hjelp av de fire eksempel-snapshotene får du lære at justering er en viktig del av databaseytelsen. Spørringene som er knyttet til forklarings-snapshotene, er nummerert fra 1 4. Hver spørring bruker en samme SQL-spørringen (beskrevet i Leksjon 1): SELECT S.ID,S.NAVN,O.AVDELING,LØNN+PROV FROM ORG O, STAB S WHERE O.AVDNR = S.AVD AND S.JOBB <> Leder AND S.LØNN+S.PROV > ALL( SELECT ST.LØNN*.9 FROM STAB ST WHERE ST.JOBB= Leder ) ORDER BY S.NAVN Hver gjentakelse av spørringen bruker imidlertid flere justeringsteknikker enn den forrige utføringen. Spørring 1 har for eksempel ingen ytelsesjustering, mens spørring 4 har flest. Ulikhetene i spørringene blir beskrevet nedenfor: Spørring 1 Kjøre en spørring uten indekser og statistikk Spørring 2 Samle gjeldende statistikk for tabellene og indeksene i en spørring Spørring 3 Opprette indekser på kolonner som brukes til å kombinere tabeller i en spørring Spørring 4 Opprette tilleggsindekser på tabellkolonner Copyright IBM Corp. 2000-2002 13

Kjøre en spørring uten indekser og statistikk I dette eksempelet ble tilgangsplanen opprettet for SQL-spørringen uten indekser og statistikk. Slik viser du tilgangsplandiagrammet for denne spørringen (spørring 1): 1. Utvid objektoversikten fra Kontrollsenter til du finner SAMPLE-databasen. 2. Høyreklikk på databasen og velg Vis historikk over forklarte setninger fra objektmenyen. Vinduet Historikk over forklarte setninger blir åpnet. 3. Dobbeltklikk på posten som er identifisert som spørring nummer 1 (du må kanskje bla til høyre for å finne kolonnen Nummer på spørring). Vinduet Tilgangsplandiagram for setningen blir åpnet. 14 VE-veiledning

Hvis du svarer på de følgende spørsmålene, vil det hjelpe deg med å forstå hvordan du kan forbedre spørringen. 1. Finnes det gjeldende statistikk for hver tabell i spørringen? Hvis du vil finne ut om det finnes gjeldende statistikk for hver tabell i spørringen, dobbeltklikker du på hver tabellnode i tilgangsplandiagrammet. I det Tabellstatistikk-vinduet som blir åpnet, inneholder raden STATS_TIME under kolonnen Forklart ordene Statistikk ikke oppdatert hvis det ikke var samlet inn statistikk på det tidspunktet snapshotet ble opprettet. Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon 15

Hvis det ikke finnes gjeldende statistikker, bruker optimalisatoren standardstatistikker som kan være forskjellige fra de faktiske statistikkene. Standardstatistikker er merket med ordet standard i kolonnen Forklart i vinduet Tabellstatistikk. I følge opplysningene i vinduet Tabellstatistikk for ORG-tabellen, brukte optimalisatoren standardstatistikker (slik det er avmerket ved siden av de forklarte verdiene). Det ble brukt standardstatistikker fordi det ikke fantes noen faktiske statistikker tilgjengelig da snapshotet ble laget (slik det er avmerket i raden STATS_TIME). 2. Bruker denne tilgangsplanen de mest effektive metodene for å få tilgang til data? Denne tilgangsplanen inneholder tabellsøk, og ikke indekssøk. Tabellsøk vises som åttekanter og er merket med TBSCAN. Hvis det var brukt indekssøk, ville de blitt vist som ruter, og de ville vært merket med IXSCAN. Bruken av en indeks som ble opprettet for en tabell, er mer kostnadseffektivt enn et tabellsøk hvis små mengder med data blir trukket ut. 3. Hvor effektiv er denne tilgangsplanen? Du kan bare finne ut hvor effektiv en tilgangsplan er hvis den er laget på grunnlag av faktiske statistikker. Siden optimalisatoren brukte standardstatistikker i denne tilgangsplanen, kan du ikke finne ut hvor effektiv den er. Som en regel bør du notere deg den totale anslåtte kostnaden for tilgangsplanen slik at du kan sammenlikne den med endrede tilgangsplaner. Kostnaden som blir vist i hver node, er kumulativ, fra det første trinnet i spørringen til og med noden. 16 VE-veiledning

I vinduet Tilgangsplandiagram er totalkostnaden omtrent 1 067 timeron, som blir vist i RETURN (1) øverst i diagrammet. Den totale anslåtte kostnaden blir også vist øverst i vinduet. 4. Hva nå? Spørring 2 ser på en tilgangsplan for den grunnleggende spørringen etter at kommandoen runstats er kjørt. Bruk av kommandoen runstats gir optimalisatoren gjeldende statistikk for alle tabellene som spørringen har tilgang til. Samle gjeldende statistikk for tabellene og indeksene ved hjelp av runstats Dette eksempelet bygger på tilgangsbanen som er beskrevet i spørring 1 ved å samle inn gjeldende statistikk med kommandoen runstats. Det anbefales at du bruker runstats-kommandoen til å samle gjeldende statistikk på tabeller og indekser, spesielt hvis det er foretatt en oppdatering Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon 17

eller det er opprettet nye indekser siden sist gang runstats-kommandoen ble utført. Dette gir optimalisatoren de mest nøyaktige opplysningene som den kan bruke til å velge den beste tilgangsplanen.hvis gjeldende statistikk ikke er tilgjengelig, kan optimalisatoren velge en ineffektiv tilgangsplan basert på unøyaktig standardstatistikk. Husk å bruke runstats etter at du har oppdatert tabellene. Hvis ikke, tror optimalisatoren at tabellen er tom. Problemet er åpenbart hvis kardinaliteten i vinduet for operatordetaljer er null. I dette tilfellet må du fullføre oppdateringene av tabellen, kjøre kommanoen runstats på nytt og gjenoppette forklarings-snapshotene for de tabellene det gjelder. Hvis du vil vise tilgangsplandiagrammet for denne spørringen (spørring 2), dobbeltklikker du på posten som er identifisert som spørring nummer 2, i vinduet Historikk over forklarte setninger. Vinduet Tilgangsplandiagram for denne utføringen av setningen, blir åpnet. 18 VE-veiledning

Hvis du svarer på de følgende spørsmålene, vil det hjelpe deg med å forstå hvordan du kan forbedre spørringen. 1. Finnes det gjeldende statistikk for hver tabell i spørringen? Vinduet Tabellstatistikk for tabellen ORG viser at optimalisatoren brukte faktisk statistikk (verdien STATS_TIME er den faktiske tiden for innsamlingen av statistikken). Statistikkens nøyaktighet avhenger av om det det er gjort vesentlige endringer i innholdet i tabellene etter at kommandoen runstats er kjørt. Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon 19

2. Bruker denne tilgangsplanen de mest effektive metodene for å få tilgang til data? I likhet med spørring 1, bruker tilgangsplanen i spørring 2 tabellsøk (TBSCAN) og ikke indekssøk (IXSCAN). Selv om det finnes gjeldende statistikk, ble det ikke utført noe indekssøk fordi det ikke finnes noen indekser på kolonnene som brukes av spørringen. En måte å forbedre spørringen på, vil være å gi optimalisatoren indekser på kolonner som brukes til å kombinere tabeller (det vil si kolonner som brukes i kombinasjonspredikater). I dette eksempelet er dette den første samkjøringskombinasjonen: HSJOIN (7). 20 VE-veiledning

I vinduet Operatordetaljer for operatoren HSJOIN (7) ser du på Kombinasjonspredikater under Inndataargumenter. Kolonnene som blir brukt i denne kombinasjonen, står under kolonnen Tekst. Her er det kolonnene AVDNR og AVD som er brukt. Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon 21

3. Hvor effektiv er denne tilgangsplanen? Tilgangsplaner som er basert på oppdatert statistikk, produserer alltid en anslått kostnad (målt i timeron) som er realistisk. Siden den anslåtte kostnaden i spørring 1 var laget på grunnlag av standardstatistikk, kan vi ikke sammenlikne kostnadene i disse to tilgangsplandiagrammene for å finne ut hvilken som er mest effektiv. Det spiller ingen rolle om kostnaden er høyere eller lavere. Du må sammenlikne kostnaden i tilgangsplaner som er laget på grunnlag av faktisk statistikk, for å få et reelt mål på effektiviteten. 4. Hva nå? Spørring 3 ser på virkningen av å tilføye indekser for kolonnene AVDNR og AVD. Hvis du tilføyer indekser for kolonnene som blir brukt i kombinasjonspredikater, kan ytelsen bli forbedret. Opprette indekser på kolonner som brukes til å kombinere tabeller i en spørring Dette eksempelet bygger på tilgangsplanen som er beskrevet i spørring 2, ved å opprette indekser for kolonnen AVD i STAB-tabellen, og for kolonnen AVDNR i ORG-tabellen. Merk: I versjon 8 kan anbefalte indekser opprettes ved hjelp av veiviseren for arbeidsbelastningsytelse. 22 VE-veiledning

Hvis du vil vise tilgangsplandiagrammet for denne spørringen (spørring 3), dobbeltklikker du på posten som er identifisert som spørring nummer 3, i vinduet Historikk over forklarte setninger. Vinduet Tilgangsplandiagram for denne utføringen av setningen, blir åpnet. Merk: Selv om det ble opprettet en indeks for AVDNR, ble den ikke brukt av optimalisatoren. Hvis du svarer på de følgende spørsmålene, vil det hjelpe deg med å forstå hvordan du kan forbedre spørringen. 1. Hva er endret i tilgangsplanen med indekser? Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon 23

En nestet sløyfekombinasjon, NLJOIN (7), har erstattet samkjøringsrutinen HSJOIN (7) som ble brukt i spørring 2. Bruk av en nestet sløyfekombinasjon resulterte i en lavere beregnet kostnad enn en samkjøringskombinasjon, fordi denne typen kombinasjon ikke krever noen sorteringstabeller eller midlertidige tabeller. En ny ruteformet node, I_AVD, er tilføyd like over STAB-tabellen. Denne noden representerer indeksen som ble opprettet for AVD, og den viser at optimalisatoren har brukt et indekssøk i stedet for et tabellsøk for å finne ut hvilke rader som skulle hentes. I denne delen av tilgangsplandiagrammet kan du legge merke til at det ble opprettet en ny indeks (I_AVD) på AVD-kolonnen, og at IXSCAN (17) ble brukt for å få tilgang til STAB-tabellen. I spørring 2 ble det brukt et tabellsøk for å få tilgang til STAB-tabellen. 24 VE-veiledning

2. Bruker denne tilgangsplanen de mest effektive metodene for å få tilgang til data? Fordi du har tilføyd indekser, ble en IXSCAN-node, IXSCAN (17), brukt til å få tilgang til STAB-tabellen. Spørring 2 hadde ingen indeks, og derfor ble det utført et tabellsøk i det eksempelet. FETCH-noden, FETCH (11), viser at i tillegg til å bruke indekssøket til å hente kolonnen AVD, hentet optimalisatoren andre kolonner fra STAB-tabellen med indeksen som peker. I dette tilfellet ble det beregnet at kombinasjonen av indekssøk og henting hadde lavere kostnad enn det fullstendige tabellsøket som ble brukt i de tidligere tilgangsplanene. Merk: Noden for STAB-tabellen vises to ganger, slik at den viser forbindelsen til både indeksen for AVD og til FETCH-operasjonen. Tilgangsplanen for denne spørringen viser effekten av å opprette indekser på kolonner som brukes i kombinasjonspredikater. Indekser kan også øke Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon 25

hastigheten på behandlingen av lokale predikater. La oss se på de lokale predikatene for hver tabell i denne spørringen for å finne ut hvordan tilgangsplanen blir påvirket hvis vi føyer indekser til kolonnene som det er referert til i lokale predikater. I vinduet Operatordetaljer for operatoren FETCH (11) ser du på kolonnene under Kumulative egenskaper. I dette predikatet for denne henteoperasjonen brukes kolonnen JOBB, slik det er vist i delen som omhandler predikater. Merk: Selektiviteten for dette predikatet er.69. Det betyr at med dette predikatet vil 69 % av radene bli valgt for videre behandling. 26 VE-veiledning

Vinduet Operatordetaljer for operatoren FETCH (11) viser kolonnene som brukes i denne operasjonen. Du kan se at AVDELING står i den første raden ved siden av Kolonne som er hentet under Inndataargumenter. 3. Hvor effektiv er denne tilgangsplanen? Denne tilgangsplanen er mer kostnadseffektiv enn planen i det forrige eksempelet. Den kumulative kostnaden er redusert fra rundt 1 755 timeron i spørring 2 til rundt 959 timeron i spørring 3. Tilgangsplanen for spørring 3 viser imidlertid et indekssøk IXSCAN (17) og en FETCH (11) for STAB-tabellen. Et indekssøk kombinert med en henteoperasjon har lavere kostnad enn et fullstendig tabellsøk, men det betyr at for hver rad som blir hentet, må programmet ha tilgang til tabellen en gang og indeksen en gang. La oss prøve å fjerne denne doble tilgangen til STAB-tabellen. 4. Hva nå? Spørring 4 reduserer hentingen og indekssøket til et enkelt indekssøk uten henting. Hvis du oppretter flere indekser, kan det redusere den beregnede kostnaden for tilgangsplanen. Opprette tilleggsindekser på tabellkolonner Dette eksempelet bygger på tilgangsplanen som er beskrevet i spørring 3, ved å opprette en indeks for JOBB-kolonnen i STAB-tabellen, og tilføye Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon 27

AVDELING i den eksisterende indeksen i ORG-tabellen. (Hvis du tilføyer en separat indeks, kan det gi ekstra tilgang.) Hvis du vil vise tilgangsplandiagrammet for denne spørringen (spørring 4), dobbeltklikker du på posten som er identifisert som spørring nummer 4, i vinduet Historikk over forklarte setninger. Vinduet Tilgangsplandiagram for denne utføringen av setningen, blir åpnet. Hvis du svarer på de følgende spørsmålene, vil det hjelpe deg med å forstå hvordan du kan forbedre spørringen. 28 VE-veiledning

1. Hva er endret i denne tilgangsplanen på grunn av at det ble opprettet tilleggsindekser? Optimalisatoren har benyttet indeksen som ble laget på JOBB-kolonnen (representert av en rute med navnet I_JOBB) til å forbedre denne tilgangsplanen ytterligere. I den midterste delen av tilgangsplandiagrammet kan du legge merke til at for ORG-tabellen er det forrige indekssøket og den forrige hentingen blitt endret til bare et indekssøk (IXSCAN 9). Siden AVDELING-kolonnen er føyd til indeksen på ORG-tabellen, kunne optimalisatoren fjerne den ekstra tilgangen for hentingen. Leksjon 3. Forbedre en tilgangsplan i et databasemiljø med enkeltpartisjon 29

2. Hvor effektiv er denne tilgangsplanen? Denne tilgangsplanen er mer kostnadseffektiv enn planen i det forrige eksempelet. Den kumulative kostnaden er redusert fra rundt 1 370 timeron i spørring 3 til rundt 959 timeron i spørring 4. Det neste Administration Guide inneholder detaljert informasjon om andre trinn du kan bruke for å bedre ytelsen. Du kan gå tilbake til Visuell forklaring for å vurdere virkningen av handlingene. 30 VE-veiledning

Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø I denne leksjonen får du lære hvordan tilgangsplanen og de tilhørende vinduene for den grunnleggende spørringen blir endret når du utfører ulike justeringsaktiviteter. Ved hjelp av en rekke eksempler og tilhørende illustrasjoner får du lære hvordan den beregnede totalkostnaden for tilgangsplanen til selv en enkel spørring, kan forbedres ved å bruke kommandoen runstats og tilføye passende indekser. Når du har arbeidet med Visuell forklaring en stund, vil du finne ut andre måter å tilpasse spørringene på. Arbeide med tilgangsplandiagrammer Ved hjelp av de fire eksempel-snapshotene får du lære at justering er en viktig del av databaseytelsen. Spørringene som er knyttet til forklarings-snapshotene, er nummerert fra 1 4. Hver spørring bruker en samme SQL-spørringen (beskrevet i Leksjon 1): SELECT S.ID,S.NAVN,O.AVDELING,LØNN+PROV FROM ORG O, STAB S WHERE O.AVDNR = S.AVD AND S.JOBB <> Leder AND S.LØNN+S.PROV > ALL( SELECT ST.LØNN*.9 FROM STAB ST WHERE ST.JOBB= Leder ) ORDER BY S.NAVN Hver gjentakelse av spørringen bruker imidlertid flere justeringsteknikker enn den forrige utføringen. Spørring 1 har for eksempel ingen ytelsesjustering, mens spørring 4 har flest. Ulikhetene i spørringene blir beskrevet nedenfor: Spørring 1 Kjøre en spørring uten indekser og statistikk Spørring 2 Samle gjeldende statistikk for tabellene og indeksene i en spørring Spørring 3 Opprette indekser på kolonner som brukes til å kombinere tabeller i en spørring Copyright IBM Corp. 2000-2002 31

Spørring 4 Opprette tilleggsindekser på tabellkolonner Disse eksemplene er produsert på en RS/6000 SP-maskin med 7 fysiske noder som bruker interpartisjonparallellitet. Kjøre en spørring uten indekser og statistikk I dette eksempelet ble tilgangsplanen opprettet for SQL-spørringen uten indekser og statistikk. Slik viser du tilgangsplandiagrammet for denne spørringen (spørring 1): 1. Utvid objektoversikten fra Kontrollsenter til du finner SAMPLE-databasen. 2. Høyreklikk på databasen og velg Vis historikk over forklarte setninger fra objektmenyen. Vinduet Historikk over forklarte setninger blir åpnet. 3. Dobbeltklikk på posten som er identifisert som spørring nummer 1 (du må kanskje bla til høyre for å finne kolonnen Nummer på spørring). Vinduet Tilgangsplandiagram for setningen blir åpnet. 32 VE-veiledning

Hvis du svarer på de følgende spørsmålene, vil det hjelpe deg med å forstå hvordan du kan forbedre spørringen. 1. Finnes det gjeldende statistikk for hver tabell i spørringen? Hvis du vil finne ut om det finnes gjeldende statistikker for hver tabell i spørringen, dobbeltklikker du på hver tabellnode i diagrammet for tilgangsplanen. I det tilsvarende Tabellstatistikk-vinduet som blir åpnet, inneholder raden STATS_TIME under kolonnen Forklart ordene Statistikk ikke oppdatert, noe som betyr at det ikke var samlet inn statistikk på det tidspunktet snapshotet ble opprettet. Hvis det ikke finnes gjeldende statistikker, bruker optimalisatoren standardstatistikker som kan være forskjellige fra de faktiske statistikkene. Standardstatistikker er merket med ordet standard i kolonnen Forklart i vinduet Tabellstatistikk. I følge opplysningene i vinduet Tabellstatistikk for ORG-tabellen, brukte optimalisatoren standardstatistikker (slik det er avmerket ved siden av de forklarte verdiene). Det ble brukt standardstatistikker fordi det ikke fantes noen faktiske statistikker tilgjengelig da snapshotet ble laget (slik det er avmerket i raden STATS_TIME). 2. Bruker denne tilgangsplanen de mest effektive metodene for å få tilgang til data? Denne tilgangsplanen inneholder tabellsøk, og ikke indekssøk. Tabellsøk vises som åttekanter og er merket med TBSCAN. Hvis det var brukt indekssøk, ville de blitt vist som ruter, og de ville være merket med Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø 33

IXSCAN. Bruken av en indeks som ble opprettet for en tabell, er mer kostnadseffektivt enn et tabellsøk hvis små mengder med data blir trukket ut. 3. Hvor effektiv er denne tilgangsplanen? Du kan bare finne ut hvor effektiv en tilgangsplan er hvis den er laget på grunnlag av faktiske statistikker. Siden optimalisatoren brukte standardstatistikker i denne tilgangsplanen, kan du ikke finne ut hvor effektiv den er. Som en regel bør du notere deg den totale anslåtte kostnaden for tilgangsplanen slik at du kan sammenlikne den med endrede tilgangsplaner. Kostnaden som blir vist i hver node, er kumulativ, fra det første trinnet i spørringen til og med noden. Merk: For partisjonerte databaser er dette den kumulative kostnaden for den noden som bruker flest ressurser. I vinduet Tilgangsplandiagram er totalkostnaden omtrent 1 234 timeron, som blir vist i RETURN (1) øverst i diagrammet. Den totale anslåtte kostnaden blir også vist øverst i vinduet. 34 VE-veiledning

4. Hva nå? Spørring 2 ser på en tilgangsplan for den grunnleggende spørringen etter at kommandoen runstats er kjørt. Bruk av kommandoen runstats gir optimalisatoren gjeldende statistikk for alle tabellene som spørringen har tilgang til. Samle gjeldende statistikk for tabellene og indeksene ved hjelp av runstats Dette eksempelet bygger på tilgangsbanen som er beskrevet i spørring 1 ved å samle inn gjeldende statistikk med kommandoen runstats. Det anbefales at du bruker runstats-kommandoen til å samle gjeldende statistikk på tabeller og indekser, spesielt hvis det er foretatt en oppdatering eller det er opprettet nye indekser siden sist gang runstats-kommandoen ble utført. Dette gir optimalisatoren de mest nøyaktige opplysningene som den Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø 35

kan bruke til å velge den beste tilgangsplanen.hvis gjeldende statistikk ikke er tilgjengelig, kan optimalisatoren velge en ineffektiv tilgangsplan basert på unøyaktig standardstatistikk. Husk å bruke runstats etter at du har oppdatert tabellene. Hvis ikke, tror optimalisatoren at tabellen er tom. Problemet er åpenbart hvis kardinaliteten i vinduet for operatordetaljer er null. I dette tilfellet må du fullføre oppdateringene av tabellen, kjøre kommanoen runstats på nytt og gjenoppette forklarings-snapshotene for de tabellene det gjelder. Hvis du vil vise tilgangsplandiagrammet for denne spørringen (spørring 2), dobbeltklikker du på posten som er identifisert som spørring nummer 2, i vinduet Historikk over forklarte setninger. Vinduet Tilgangsplandiagram for denne utføringen av setningen, blir åpnet. 36 VE-veiledning

Hvis du svarer på de følgende spørsmålene, vil det hjelpe deg med å forstå hvordan du kan forbedre spørringen. 1. Finnes det gjeldende statistikk for hver tabell i spørringen? Vinduet Tabellstatistikk for tabellen ORG viser at optimalisatoren brukte faktisk statistikk (verdien STATS_TIME er den faktiske tiden for innsamlingen av statistikken). Statistikkens nøyaktighet avhenger av om det det er gjort vesentlige endringer i innholdet i tabellene etter at kommandoen runstats er kjørt. Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø 37

2. Bruker denne tilgangsplanen de mest effektive metodene for å få tilgang til data? I likhet med spørring 1, bruker tilgangsplanen i spørring 2 tabellsøk (TBSCAN) og ikke indekssøk (IXSCAN). Selv om det finnes gjeldende statistikk, ble det ikke utført noe indekssøk fordi det ikke finnes noen indekser på kolonnene som brukes av spørringen. En måte å forbedre spørringen på, vil være å gi optimalisatoren indekser på kolonner som brukes til å kombinere tabeller (det vil si kolonner som brukes i kombinasjonspredikater). I dette eksempelet er dette den første samkjøringskombinasjonen: HSJOIN (9). 38 VE-veiledning

I vinduet Operatordetaljer for operatoren HSJOIN (9) ser du på Kombinasjonspredikater under Inndataargumenter. Kolonnene som blir brukt i denne kombinasjonen, står under kolonnen Tekst. Her er det kolonnene AVDNR og AVD som er brukt. Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø 39

3. Hvor effektiv er denne tilgangsplanen? Tilgangsplaner som er basert på oppdatert statistikk, produserer alltid en anslått kostnad (målt i timeron) som er realistisk. Siden den anslåtte kostnaden i spørring 1 var laget på grunnlag av standardstatistikk, kan vi ikke sammenlikne kostnadene i disse to tilgangsplandiagrammene for å finne ut hvilken som er mest effektiv. Det spiller ingen rolle om kostnaden er høyere eller lavere. Du må sammenlikne kostnaden i tilgangsplaner som er laget på grunnlag av faktisk statistikk, for å få et reelt mål på effektiviteten. 4. Hva nå? Spørring 3 ser på virkningen av å tilføye indekser for kolonnene AVDNR og AVD. Hvis du tilføyer indekser for kolonnene som blir brukt i kombinasjonspredikater, kan ytelsen bli forbedret. Opprette indekser på kolonner som brukes til å kombinere tabeller i en spørring Dette eksempelet bygger på tilgangsplanen som er beskrevet i spørring 2, ved å opprette indekser for kolonnen AVD i STAB-tabellen, og for kolonnen AVDNR i ORG-tabellen. 40 VE-veiledning

Merk: I versjon 8 kan anbefalte indekser opprettes ved hjelp av veiviseren for arbeidsbelastningsytelse. Hvis du vil vise tilgangsplandiagrammet for denne spørringen (spørring 3), dobbeltklikker du på posten som er identifisert som spørring nummer 3, i vinduet Historikk over forklarte setninger. Vinduet Tilgangsplandiagram for denne utføringen av setningen, blir åpnet. Merk: Selv om det ble opprettet en indeks for AVDNR, ble den ikke brukt av optimalisatoren. Hvis du svarer på de følgende spørsmålene, vil det hjelpe deg med å forstå hvordan du kan forbedre spørringen. 1. Hva er endret i tilgangsplanen med indekser? Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø 41

En ny ruteformet node, I_AVD, er tilføyd like over STAB-tabellen. Denne noden representerer indeksen som ble opprettet for AVD, og den viser at optimalisatoren har brukt et indekssøk i stedet for et tabellsøk for å finne ut hvilke rader som skulle hentes. 2. Bruker denne tilgangsplanen de mest effektive metodene for å få tilgang til data? Tilgangsplanen for denne spørringen viser virkningen av å opprette indekser for kolonnen AVDNR i ORG-tabellen, som gir resultatet FETCH (15) og IXSCAN (21), og for kolonnen AVD i STAB-tabellen. Spørring 2 hadde ingen indeks, og derfor ble det brukt et tabellsøk i det eksempelet. 42 VE-veiledning

Vinduet Operatordetaljer for operatoren FETCH (15) viser kolonnene som brukes i denne operasjonen. Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø 43

Kombinasjonen av indeks og henting er beregnet til ha lavere kostnad enn det fullstendige tabellsøket som ble brukt i de tidligere tilgangsplanene. 3. Hvor effektiv er denne tilgangsplanen? Denne tilgangsplanen er mer kostnadseffektiv enn planen i det forrige eksempelet. Den kumulative kostnaden er redusert fra rundt 1 214 timeron i spørring 2 til rundt 755 timeron i spørring 3. 4. Hva nå? Spørring 4 reduserer hentingen og indekssøket til et enkelt indekssøk uten henting. Hvis du oppretter flere indekser, kan det redusere den beregnede kostnaden for tilgangsplanen. Opprette tilleggsindekser på tabellkolonner Dette eksempelet bygger på tilgangsplanen som er beskrevet i spørring 3, ved å opprette en indeks for JOBB-kolonnen i STAB-tabellen, og tilføye AVDELING i den eksisterende indeksen i ORG-tabellen. (Hvis du tilføyer en separat indeks, kan det gi ekstra tilgang.) 44 VE-veiledning

Hvis du vil vise tilgangsplandiagrammet for denne spørringen (spørring 4), dobbeltklikker du på posten som er identifisert som spørring nummer 4, i vinduet Historikk over forklarte setninger. Vinduet Tilgangsplandiagram for denne utføringen av setningen, blir åpnet. Hvis du svarer på de følgende spørsmålene, vil det hjelpe deg med å forstå hvordan du kan forbedre spørringen. 1. Hva er endret i denne tilgangsplanen på grunn av at det ble opprettet tilleggsindekser? I den midterste delen av tilgangsplandiagrammet kan du legge merke til at for ORG-tabellen er det forrige tabellsøket endret til et indekssøk (IXSCAN 7). Siden kolonnen AVDELING er føyd til indeksen for ORG-tabellen, kunne optimalisatoren forbedre tilgangen for tabellsøket. Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø 45

46 VE-veiledning I den nederste delen av tilgangsplandiagrammet kan du legge merke til at for STAB-tabellen er det forrige indekssøket og den forrige hentingen endret til bare et indekssøk (IXSCAN 39). Siden indeksen JOBB ble opprettet for STAB-tabellen, kunne optimalisatoren fjerne den ekstra tilgangen for hentingen.

2. Hvor effektiv er denne tilgangsplanen? Denne tilgangsplanen er mer kostnadseffektiv enn planen i det forrige eksempelet. Den kumulative kostnaden er redusert fra rundt 753 timeron i spørring 3 til rundt 288 timeron i spørring 4. Det neste Administration Guide inneholder detaljert informasjon om andre trinn du kan bruke for å bedre ytelsen. Du kan gå tilbake til Visuell forklaring for å vurdere virkningen av handlingene. Leksjon 4. Forbedre en tilgangsplan i et partisjonert databasemiljø 47