DB2 Connect Brugervejledning

Applikationsdesign

Under applikationsudvikling kan performance forbedres på flere måde, f.eks.:

Sammensat SQL og lagrede procedurer

For applikationer, der sender og modtager mange kommandoer og svar, kan netværkstiden være betragtelig. Netværkstiden kan blandt andet reduceres vha. sammensat SQL og lagrede procedurer.

Hvis en applikation sender flere SQL-sætninger uden mellemliggende programmeringslogik, kan der benyttes sammensat SQL. Hvis der er behov for programmeringslogik imellem SQL-sætningerne, kan der benyttes lagrede procedurer.

Med følgende undtagelser kan alle sætninger, der kan udføres, indgå i en sammensat SQL-sætning:

       CALL                                                    
       FETCH
       CLOSE
       OPEN
       Sammensat SQL
       Connect                                                 
       Prepare                                                 
       Release                                                 
       Describe                                                
       Rollback                                                
       Disconnect                                              
       Set connection                                          
       execute immediate                                       

Der er flere oplysninger i SQL Reference.

Der er flere oplysninger om brugen af sammensat SQL i en applikation i NOT ATOMIC sammensat SQL. Import og eksport indeholder oplysninger om brugen af sammensat SQL sammen med importfunktionen.

Brug af lagrede procedurer mindsker belastning på netværket, ved at der placeres programlogik på serveren. I tidligere DB2-versioner end Version 5.0 kunne en lagret procedure kun returnere outputparametre, og applikationen skulle afsende en separat kommando til udførelse af commit. Dette resulterede i to netværksoperationer. I DB2 Version 5.0 og senere versioner kan du udføre automatisk commit, når proceduren afsluttes. Du kan også returnere resultatsæt, hvilket minimerer applikationslogik på klienten.

Lagrede procedurer indeholder oplysninger om lagrede procedurer.

Gruppering af forespørgsler

Hvis flere relaterede databaseforespørgsler (SQL-sætninger) samles i én databaseforespørgsel, kan antallet af forespørgsler og svar, der sendes over netværket, blive reduceret. Hvis følgende sætninger f.eks. grupperes:

   SELECT KOL1, KOL2, KOL5, KOL6 FROM TABELA WHERE RK_ID=1
   SELECT KOL1, KOL2, KOL5, KOL6 FROM TABELA WHERE RK_ID=2

til

SELECT KOL1, KOL2, KOL5, KOL6 FROM TABELA WHERE RK_ID=1 OR RK_ID=2

sendes færre forespørgsler over netværket.

Du kan også bruge nøgleord som IN og BETWEEN til at reducere antallet af de rækker, der returneres. Derudover kan du bruge nøgleordene WHERE, IN og BETWEEN i UPDATE- og DELETE-sætninger.

Prædikatslogik

Du kan bruge prædikatslogik til kun at hente de rækker og kolonner, der er brug for. Derved reduceres netværkstrafikken og CPU-tiden til dataoverførsel.

Undlad f.eks. at benytte følgende forespørgsel:

   SELECT * FROM TABELA

hvis du i virkeligheden kun har brug for første række i TABELA med RK_ID=1, eller kun kolonne 1 og kolonne 2.

Datablokning

Du bør benytte datablokning, hvis du forventer store mængder data fra serveren. Blokning forbedrer udnyttelsen af netværkskapaciteten og reducerer CPU-tidsforbruget på både værts- eller AS/400-databaseserveren og DB2 Connect-arbejdsstationen.

Uanset størrelsen er der et fast CPU- og netværkstidstillæg for hver meddelelse, der sendes og modtages. Datablokning reducerer det antal meddelelser, der skal bruges til at overføre samme mængde data.

Ved blokning bliver første række data fra en forespørgsel ikke videregivet til applikationen, før den første blok er modtaget. Blokning øger den tid, der skal bruges på at hente første række, men reducerer tiden for de efterfølgende rækker.

Et andet aspekt er den mængde hukommelse, der anvendes. Den aktive del af hukommelsen øges normalt, når der benyttes blokning. DRDA Connectivity Guide indeholder en omfattende beskrivelse af blokning ved SNA-forbindelser.

I DB2 Connect kan du styre den mængde data, der overføres i hver blok. Det er beskrevet i RQRIOBLK.

Du aktiverer blokning ved at benytte BLOCKING-parameteren i PREP- eller BIND-kommandoen. Se også BIND-kommandoen. Blokning er aktiv, hvis:

De forskellige cursortyper (læs, opdatér, flertydig) er beskrevet i Application Development Guide.
Bemærk:Når der anvendes dynamisk SQL, er cursoren altid flertydig.

SQL-sætninger med BLOCKING

Datablokning er ikke mulig i SELECT-sætninger til opdatering (vha. sætningerne UPDATE/DELETE WHERE CURRENT OF), så de bør kun bruges, når det er absolut nødvendigt.

En SELECT til opdatering sikrer, at rækken ikke ændres fra det tidspunkt, hvor SELECT er afsluttet, og til UPDATE/DELETE startes. Hvis denne samtidighed ikke er vigtig for applikationen, kan der alternativt bruges en DELETE eller UPDATE med søgekriterier ud fra de værdier, der returneres fra en ikke-opdaterings-SELECT.

Angiv FOR FETCH ONLY for en SELECT, der kun skal læse data (undtagen under VM og VSE, hvor det ikke er muligt).

Statisk og dynamisk SQL

Brug så vidt muligt statisk SQL. Derved undgås klargøring af SQL-afsnit under afviklingen og flertydige cursorer. Hvis det er nødvendigt at bruge dynamisk SQL, kan du reducere netværkstrafikken og forbedre performance på følgende måder:

Andre SQL-aspekter

Det er generelt langsommere at bruge DB2-kommandolinien end at have dynamisk SQL i programmet, fordi DB2-kommandolinien skal analysere input, inden SQL'en sendes til databasekernen. DB2-kommandolinien formaterer også data, når de modtages. Det er muligvis ikke nødvendigt for applikationen.

SQL-sætninger i et fortolket sprog (som f.eks. REXX) er væsentligt langsommere end samme SQL-sætninger i et kompileret sprog (f.eks. C).

Der er to typer CONNECT-sætninger: type 1 og type 2. Når der oprettes forbindelse til en database vha. en Type 2-CONNECT, sættes den tidligere forbindelse i hvilende tilstand, men den afbrydes ikke. Hvis du senere skifter til en hvilende forbindelse, spares den tid, det tager at indlæse programbiblioteker og klargøre interne datastrukturer. Af den årsag kan Type 2-forbindelser forbedre performance for applikationer, der benytter mere end én database. Der er flere oplysninger om Type 2-CONNECT i Administration Guide og SQL Reference.


[ Øverst på siden | Forrige side | Næste side | Indholdsfortegnelse | Stikordsregister ]