praktiskais darbs nr.1 - web viewmūsu intensīvās dzīves apstākļos arvien vairāk pieaug...

56
RĪGAS TEHNISKĀ UNIVERSITĀTE RĪGAS TEHNISKĀ UNIVERSITĀTE DATORZINĀTNES UN INFORMĀCIJAS TEHNOLOĢIJAS DATORZINĀTNES UN INFORMĀCIJAS TEHNOLOĢIJAS FAKULTĀTE FAKULTĀTE LIETIŠKO DATORSISTĒMU INSTITŪTS LIETIŠKO DATORSISTĒMU INSTITŪTS INFORMĀTIKAS UN PROGRAMMĒŠANAS KATEDRA INFORMĀTIKAS UN PROGRAMMĒŠANAS KATEDRA «Informācijas sistēmas un CASE rīki» 1. praktiskais darbs «SQL vaicājumu optimizācija» Izstrādāja: Arnis Kiršners I DMIO, 2. grupa

Upload: vunga

Post on 06-Feb-2018

222 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

RĪGAS TEHNISKĀ UNIVERSITĀTERĪGAS TEHNISKĀ UNIVERSITĀTE

DATORZINĀTNES UN INFORMĀCIJAS TEHNOLOĢIJASDATORZINĀTNES UN INFORMĀCIJAS TEHNOLOĢIJAS

FAKULTĀTEFAKULTĀTE

LIETIŠKO DATORSISTĒMU INSTITŪTSLIETIŠKO DATORSISTĒMU INSTITŪTS

INFORMĀTIKAS UN PROGRAMMĒŠANAS KATEDRAINFORMĀTIKAS UN PROGRAMMĒŠANAS KATEDRA

«Informācijas sistēmas un CASE rīki»

1. praktiskais darbs

«SQL vaicājumu optimizācija»

Izstrādāja: Arnis KiršnersI DMIO, 2. grupa

Apl. Nr.: 051RDB243Pārbaudīja: prof. J. Eiduks

Rīga, 2009.

Page 2: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

SatursUzdevuma nostādne..............................................................................................4

Ievads....................................................................................................................5

1. Datubāzes izveide Oracle vidē....................................................................6

2. Vaicājumu izveidošana................................................................................9

2.1. Pirmais vaicājums.................................................................................9

2.2. Otrais vaicājums.................................................................................10

2.2.1. Relāciju algebras skaidrojums otrajam vaicājumam......................10

2.3. Trešais vaicājums...............................................................................10

2.3.1. Relāciju algebras skaidrojums trešajam vaicājumam....................11

2.4. Ceturtais vaicājums (HAVING).........................................................11

2.5. Piektais vaicājums (EXISTS).............................................................11

2.5.1. Relāciju algebras skaidrojums piektajam vaicājumam..................12

2.6. Sestais vaicājums (GROUP BY CUBE)............................................12

2.7. Septītais vaicājums (OVER)...............................................................13

2.8. Astotais vaicājums (hierarhiskie).......................................................14

2.9. Devītais vaicājums (pakārtots – FROM bez WHERE)......................15

2.10. Desmitais vaicājums (pakārtots – FROM ar WHERE)......................16

2.10.1. Relāciju algebras skaidrojums desmitajam vaicājumam.............16

2.11. Vienpadsmitais vaicājums (pakārtots – SELECT).............................16

2.11.1. Relāciju algebras skaidrojums vienpadsmitajam vaicājumam.....17

2.12. Divpadsmitais vaicājums (pakārtots – HAVING)..............................17

3. Izpildes plāna iegūšana un analīze.............................................................18

3.1. Izpildes plāns pirmajam vaicājumam.................................................20

3.2. Izpildes plāns otrajam vaicājumam....................................................21

3.3. Izpildes plāns trešajam vaicājumam...................................................22

3.4. Izpildes plāns ceturtajam vaicājumam................................................23

3.5. Izpildes plāns piektajam vaicājumam.................................................24

3.6. Izpildes plāns sestajam vaicājumam...................................................25

3.7. Izpildes plāns septītajam vaicājumam................................................26

3.8. Izpildes plāns astotajam vaicājumam.................................................27

3.9. Izpildes plāns devītajam vaicājumam.................................................28

3.10. Izpildes plāns desmitajam vaicājumam..............................................29

Page 3: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

3.11. Izpildes plāns vienpadsmitajam vaicājumam.....................................30

3.12. Izpildes plāns divpadsmitajam vaicājumam.......................................31

4. Trīs ieteikumu (HINTS) realizācija...........................................................33

4.1. Pirmā ieteikuma realizācija................................................................34

4.2. Otrā ieteikuma realizācija...................................................................35

4.3. Trešā ieteikuma realizācija.................................................................37

5. Secinājumi.................................................................................................39

Izmantotās literatūras saraksts............................................................................41

Page 4: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Uzdevuma nostādne

Datubāzes izveide vai esošas datubāzes reducēšana izmantošanai ORACLE vidē ;

Vaicājumu izveidošana;

5 vaicājumiem izpildāmās relāciju algebras komandas;

Izpildes plānu iegūšana un realizācija;

3 ieteikumu realizācija;

Secinājumi.

DBVS-5 © Arnis Kiršners – 2009 4

Page 5: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Ievads

Mūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc

tiek patērēts arī lielāks laika patēriņš, lai izgūtu vajadzīgo informāciju no liela datu apjoma

(miljoniem ierakstu). Un ja nu vēl tas ir saistīts ar lielām datubāzēm, kuru datu apjoms

mērāms terabaitos, tad izgūt pieprasīto informāciju un papildus vēl veikt nelielus aprēķinus ar

pieprasītajiem datiem – prasa ievērojamu laika patēriņu. Lai risinātu šo problēmu, Oracle vidē

tiek izmantots SQL optimizātors, kas ar ieteikumu un plānu palīdzību realizē SQL vaicājumu

optimizāciju Oracle vidē. Optimizātors ir koda fragments, kas apraksta Oracle datu apstrādes

modeli. Pielietojot izveidoto datu apstrāde modeli, optimizātors cenšas efektīvi pārveidot SQL

vaicājumu izpildes plānā.

DBVS-5 © Arnis Kiršners – 2009 5

Page 6: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

1. Datubāze

s izveide Oracle vidē

Lai varētu efektīvi strādāt Oracle vidē, jaunizveidojamo datubāzi izvieto atsevišķā

tabulas telpā ar nosaukumu SQLOPT, kuru izveido ar rīka SQLPlus palīdzību, pievienojoties

kā system lietotājs. Izveidotajai tabulas telpai izveido lietotāju ar paroli un piešķir lietošanas

tiesības, šo procesu izvedi, skatīt 1. attēlā.

1. att. Tabulas telpas un lietotāja izveide

Tā kā praktiskā darba veikšanai tiek piedāvāts izmantot datubāzi, kura satur datus par

personām, to algām, valstīm un nodaļām, kas realizēta Microsoft Access 2000 formātā, bet šī

praktiskā darba specifika pieprasa realizācijas veikt Oracle vidē, tāpēc nepieciešams ir veikt

datubāzes transformāciju uz Oracle vidi. Atveram doto datubāzi Microsoft Access 2007 vidē,

izmantojot iebūvēto rīku datubāzu eksportam, izvēlamies sadaļu «Papildus», kurā izvēlamies

«ODBC datu bāze», atveras saskarne, skatīt 2. attēlu, kurā norādām attiecīgās tabulas

nosaukumu. Tālāk tiek atvērta saskarne, skatīt 3. attēlu, kur norāda ceļu uz kuru datu bāzi tiks

DBVS-5 © Arnis Kiršners – 2009 6

Page 7: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

2. att. Eksportēšanas saskarnes logs rīkā MS Access 2007

veikta transformācija un jāpiešķir datu struktūras nosaukums (DSN). Tālāk jānospiež taustiņš

«Jauns», tiks atvērta jauna saskarne, skatīt 4. attēlu, kurā jāizvēlas datu avota tips – mūsu

3. att. Saskarne datu struktūras nosaukuma izveidei

DBVS-5 © Arnis Kiršners – 2009 7

Page 8: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

4. att. Saskarne datu avota izvēlei

gadījumā Oracle in OraDb 10g_home1. Turpinājumā spiežam taustiņu tālāk, kā rezultātā tiek

atvērts jauns saskarnes logs, skatīt 5. attēlu, kurā jānorāda datubāzes nosaukums, lietotājs un

parole. Tiks veikta datu struktūru transformācija.

5. att. Saskarne savienojumam ar datubāzi

Transformētajām datu struktūrām: tabulās ALGAS, VALSTIS un NODALAS,

jāizveido primārās atslēgas, bet tabulai PERSONAS trīs sekundārās atslēgas ar atsauci uz

tabulām, kurās izveidotas primārās atslēgas. Lai aplūkotu izveidotās struktūras, izmantosim

rīka Toad for Oracle 8.5 ER diagrammu attēlotāju, skatīt 6. attēlu.

DBVS-5 © Arnis Kiršners – 2009 8

Page 9: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

6. att. Transformēto datu struktūru attēlojums ar rīku Toad for Oracle 8.5

DBVS-5 © Arnis Kiršners – 2009 9

Page 10: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

2. Vaicājum

u izveidošana

Kad datubāze ir izveidota var sākt vaicājumu veidošanu. Šajā nodaļā veidosim dažādas

sarežģītības vaicājumus, veidojot tos no vienas vai vairākām tabulām. Tā kā vaicājumu valoda

tiek bāzēta uz relācijas algebras darbībām, tad vaicājumiem pēc izvēles aplūkosim relāciju

algebras darbības un tās var būt sekojošas:

Selekcija;

Projekcija;

Savienojums;

Pārklājums;

Apvienošana;

Starpība;

Dekarta reizinājums;

Dalījums;

Dabiskais savienojums.

2.1. Pirmais vaicājums

Ar šī vaicājuma palīdzību izgūsim no vienas tabulas (VALSTIS) visus atribūtus un

visus ierakstus, kas atrodas dotajā tabulā. Vaicājumu teksts ir sekojošs, realizāciju skatīt 7.

attēlā:SELECT VALSTS_KODS, VALSTS_NOS, PILSONIBAS_NOSFROM VALSTIS

DBVS-5 © Arnis Kiršners – 20097.att. Pirmā vaicājuma rezultāts

10

Page 11: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

2.2. Otrais vaicājums

Ar šī vaicājuma palīdzību izgūsim no vienas tabulas (PERSONAS) izvēlētus atribūtus

(vārds, uzvārds, personas kods, dzimšanas datums, valsts kategorija, tips, dzimte) un atlasītus

ierakstus ar operatoru OR un AND palīdzību. Šis vaicājums atlasīs visus, kas ir no Latvijas ar

kategoriju B, uzvārdu Ābele un vārdu Klāvs vai Līga. Vaicājumu teksts ir sekojošs,

realizāciju skatīt 8. attēls:SELECT VARDS, UZVARDS, PERS_KODS, DZIM_DAT, VALSTS, KATEGORIJA, TIPS,

DZIMTEFROM PERSONASWHERE (((VARDS='KLAVS') OR (VARDS='LIGA')) AND (VALSTS='LAT') AND

(KATEGORIJA='B') AND (UZVARDS='ABELE'))

8. att. Otrā vaicājuma rezultāts

2.2.1. Relāciju algebras skaidrojums

otrajam vaicājumam

Šajā vaicājumā tiek realizētas sekojošas relāciju algebras darbības:

Projekcija – no visas tabulas PERSONAS laukiem tiek atlasīti izvēlēti atribūti:

VARDS, UZVARDS, PERS_KODS, DZIM_DAT, VALSTS, KATEGORIJA, TIPS,

DZIMTE;

Selekcija – ar nosacījumu operatora WHERE palīdzību tiek, kurā iekļauti operatori

AND un OR tiek atlasītas personas ar vārdu Klāvs vai Līga, ja tiem ir kopīgs uzvārds

Ābele, tie ir no Latvijas un kategorija B.

2.3. Trešais vaicājums

Vaicājumā no divām tabulām (PERSONAS un ALGAS) izgūt tās personas, kuru

dzimšanas datums ir 020615, vaicājuma rezultātu skatīt 9. attēlā, bet SQL kods ir sekošs:SELECT A.ID, A.VALSTS, A.DZIM_DAT, A.PERS_KODS, A.VARDS, A.UZVARDS,

B.VIDEJA_ALGA FROM PERSONAS A, ALGAS BWHERE ((A.ID=B.ID) AND (A.DZIM_DAT='020615'))

9. att. Trešā vaicājuma rezultāts

DBVS-5 © Arnis Kiršners – 2009 11

Page 12: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

2.3.1. Relāciju algebras skaidrojums

trešajam vaicājumam

Savienošana – tiek savienotas divas tabulas PERSONAS un VALSTIS atbilstoši saites

1:N nosacījumiem, tas nozīmē, ka tie ģenerēti vienas tabulas rindu dublikāti, kas

savienoti ar otras tabulas rindām;

Projekcija – no visas tabulas PERSONAS laukiem tiek atlasīti izvēlēti atribūti:

VARDS, UZVARDS, PERS_KODS, DZIM_DAT, VALSTS, KATEGORIJA, TIPS,

DZIMTE;

Selekcija – ar nosacījumu operatora WHERE palīdzību, kurā iekļauti operatori AND

un OR tiek atlasītas personas ar vārdu Klāvs vai Līga, ja tiem ir kopīgs uzvārds Ābele,

tie ir no Latvijas un kategorija B.

2.4. Ceturtais vaicājums (HAVING)

Vaicājumos ar HAVING iespējams izmantot, kā parastos tā arī korelējošos

apakšvaicājumus. Korelējošos apakšvaicājumos par ārējām atsaucēm jāizmanto tikai tie

vaicājuma elementi, kuri tieši tiek izmantoti HAVING frāzē. Jo HAVING frāzē var izmantot

tikai agregātfunkcijas, kurām par argumentiem kalpo tekošā vaicājuma atribūtu nosaukumi,

vai atribūti kuri tiek izmantoti frāzē GROUP BY. Par iemeslu tam kalpo frāzes HAVING

predikāti, kas tiek novērtēti kā tabulas rindu grupa. No kā izriet, ka korelējošie

apakšvaicājumi tiks izpildīti katrai grupai. Ar vaicājuma, skatīt zemāk, palīdzību tiek izgūti tie

Jāņi ar attiecīgo uzvārdu, kuru vārds un uzvārds sakrīt (dotajā datubāzē) vairāk kā trīs reizes,

vaicājuma rezultātu skatīt 10. attēlā.SELECT A.VARDS, A.UZVARDSFROM PERSONAS A, ALGAS BWHERE ((A.ID=B.ID) AND (A.VARDS='JANIS'))GROUP BY A.VARDS, A.UZVARDSHAVING COUNT(A.VARDS) > 3

10. att. Ceturtā vaicājuma rezultāts

2.5. Piektais vaicājums (EXISTS)

Unārais salīdzinājuma operators EXISTS pārbauda vai kopa ir tukša, kura specificēta tā

argumentā. Ja kopa ir netukša – predikāts EXISTS saņem stāvokli patiess, bet ja tukša – DBVS-5 © Arnis Kiršners – 2009 12

Page 13: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

aplams. Variantā ar loģiku NOT EXISTS loģika tiek mainīta uz pretējo pusi. Operators

EXISTS var tikt izmantots WHERE un HAVING frāzēs. Ar nākamā piemēra palīdzību tiek

realizēts vaicājums, kurā operators EXISTS tiek izmantots kā korelējošs vaicājums. EXISTS

operators atgriezīs visas tās personas, kuru uzvārds ir Bērziņš un algas apmērs ir lielāks par

90, savukārt izvadīts tiks atlasīto personu vārdi un uzvārdi, vaicājuma realizāciju skatīt 11.

attēlā, bet vaicājums teksts ir sekojošs:SELECT VARDS, UZVARDSFROM PERSONAS AWHERE EXISTS (SELECT * FROM ALGAS BWHERE (B.ID=A.ID) AND (A.UZVARDS='BERZINS') AND (B.FAKTISKA_ALGA>90))

11. att. Piektā vaicājuma rezultāts

2.5.1. Relāciju algebras skaidrojums

piektajam vaicājumam

Projekcija – apakšvaicājumā no tabulas ALGAS tiek atlasīti visi atribūti;

Selekcija – apakšvaicājumā no tabulas ALGAS ar nosacījumu operatora WHERE

palīdzību, kurā iekļauti operatori AND tiek atlasītas personas ar uzvārdu Bērziņš un

faktisko algu, kas lielāka par 90;

Projekcija – pamata vaicājumā no tabulas PERSONAS laukiem tiek atlasīti atribūti:

VARDS, UZVARDS;

Selekcija – pamata vaicājumā ar nosacījumu operatora WHERE palīdzību, kurā

iekļauts operators EXISTS tiek atgriezta vērtība patiess, ja izpildās apakšvaicājuma

nosacījumi.

2.6. Sestais vaicājums (GROUP BY CUBE)

Frāze GROUP BY CUBE, kas SELECT teikumā formē grupas pēc visām norādītām

dimensiju kombinācijām, tādā veidā nodrošinot visu to vērtību agregāciju un kopējo vērtību

agregāciju. Frāze CUBE, it īpaši efektīvi, pielietojama vaicājumos, kuros nepieciešama datu

agregācija brīvi izvēlētā datu kuba dimensijās. Agregātu funkcijās CUBE un ROLLUP un

tikai šajās var izmantot funkciju GROUPING, kura tiek izmantota viena atribūta agregācijai

un atgriež vērtību 1. Operators UPPER nodrošina vaicājuma rezultātā attēlot tam pakārtotās

vērtības. Šī vaicājuma rezultātā tiks izvadīti pensiju tipi, kas saskaitīti pa valstīm atsevišķi un

DBVS-5 © Arnis Kiršners – 2009 13

Page 14: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

kopā, saskaitīti visi tipi katrai valstij un visi tipi pa visām valstīm kopā, vaicājuma realizāciju

skatīt 12. attēlā, savukārt vaicājums ir sekojošs:

SELECT DECODE(GROUPING(B.TIPS), 1, 'VISI TIPI KOPA', UPPER(B.TIPS)) AS TIPI, DECODE(GROUPING(A.VALSTS_KODS), 1, 'VALSTIS KOPA', UPPER(A.VALSTS_KODS)) AS "VALSTIS", COUNT(*) AS "TIPU SKAITS"

FROM VALSTIS A, PERSONAS BWHERE (A.VALSTS_KODS=B.VALSTS) GROUP BY CUBE (B.TIPS, A.VALSTS_KODS)

12. att. Sestā vaicājuma rezultāts

2.7. Septītais vaicājums (OVER)

Ar OVER tipu jeb klona tabulām realizēsim vaicājumu, kas izvadīs faktisko algu no

tabulas ALGAS attiecīgajam tipam no tabulas PERSONAS, ja atribūta SAKUMA_DATUMS

tabulā ALGAS vērtība ir 20010501. Operators OVER nodrošina, ka ar PARTITION BY pēc

atribūta TIPS no tabulas PERSONAS tiks summēti attiecīgie lauki atribūtam

FAKTISKA_ALGA no tabulas ALAGAS. Citiem vārdiem sakot tiks izveidotas klona tabula

ar kuru palīdzību tiek nodrošināt attiecīgo lauku summēšana, vaicājuma rezultātu skatīt 13.

attēlā, savukārt vaicājuma teksts ir sekojošs:

SELECT A.TIPS, B.FAKTISKA_ALGA, SUM(B.FAKTISKA_ALGA)OVER (PARTITION BY A.TIPS) "TIPAM KOPA"

DBVS-5 © Arnis Kiršners – 2009 14

Page 15: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

FROM PERSONAS A, ALGAS BWHERE (A.ID=B.ID) AND (B.SAKUMA_DATUMS=20010501)

13. att. Septītā vaicājuma rezultāts

2.8. Astotais vaicājums (hierarhiskie)

Hierarhiskie vaicājumu nodrošina datu sadalīju līmeņos vai grafa (koka) zaros, kā arī

iespēju veikt rekursīvos vaicājumus. Frāze START WITH norāda koka sakni, frāze

CONNECT BY norāda kādā veidā ir savstarpēji saistīti vecāku un bērnu virsotnes, kādi

atribūti tiek lietoti šo saišu nodrošināšanai. Pseido atribūts LEVEL realizē papildus atribūta

lauku, kurā sistēma glabā noteikta tipa datus, kas raksturo dotā līmeņa stāvokli hierarhijā. Lai

realizētu hierarhisko vaicājumu, tabulā NODALAS pievieno jaunu atribūtu PAKLAUTIBA,

kas realizē nodalu struktūru, fragments no pievienotajām vērtībām aplūkojams 14. attēlā.

DBVS-5 © Arnis Kiršners – 2009 15

Page 16: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

14. att. Modificētās tabulas NODALAS modifikācija

Pēc tabulas modifikācijas var veidot vaicājumu, ar kuru izvada tās pilsētas, kas atrodas

hierarhijas 1 līmenī, vaicājuma rezultātu skatīt 15. attēlā, bet vaicājuma kods ir sekojošs:SELECT PILSETAFROM NODALASSTART WITH PAKLAUTIBA=1CONNECT BY PRIOR PILSETA=ID

15. att. Astotā vaicājuma realizācija

2.9. Devītais vaicājums (pakārtots – FROM bez WHERE)

Frāzē FROM var atrasties ne tikai tabulu nosaukumi, bet arī tabulu atgriezošie

apakšvaicājumi. FROM frāze var iekļaut apakšvaicājumus, piemēram, kas veic dažāda veida

aprēķinus. Šajā piemērā realizēts vidējās vērtības aprēķins attiecīgajam atribūtam, pie tam vēl

pielietojot noapaļošanas operatoru ROUND. FROM apakšvaicājums realizē tabulā ALGAS

atribūtu FAKTISKA_ALGA un VIDEJA_ALGA vidējo vērtību aprēķinu, vaicājuma

rezultātu skatīt 16. attēlā, bet vaicājuma teksts ir sekojošs:SELECT A.VA AS "VID.FAKT.ALGA",

A.VV AS "VID.VID.ALGA"FROM (SELECT ROUND(AVG(FAKTISKA_ALGA),2) AS VA FROM ALGAS) A,

(SELECT ROUND(AVG(VIDEJA_ALGA),2) AS VV FROM ALGAS)A

16. att. Devītā vaicājuma realizācijaDBVS-5 © Arnis Kiršners – 2009 16

Page 17: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

2.10. Desmitais vaicājums (pakārtots – FROM ar WHERE)

Ar sekojošā pakārtotā vaicājuma palīdzību izgūsim no tabulām PERSONAS un ALGAS

tos pilsoņus, kuru faktiskā alga ir virs 90 ir no Latvijas un algas sākuma datums ir 20010101.

Vaicājuma realizāciju skatīt 17. attēlā, teksta kods ir sekojošs:SELECT C.VARDS, C.UZVARDS, C.VALSTS, C.SAKUMA_DATUMS, C.FAKTISKA_ALGAFROM (SELECT B.VARDS, B.UZVARDS, B.VALSTS, A.SAKUMA_DATUMS, A.FAKTISKA_ALGAFROM PERSONAS B, ALGAS AWHERE B.ID=A.ID AND A.FAKTISKA_ALGA>90) CWHERE C.VALSTS='LAT' AND C.SAKUMA_DATUMS='20010101'

17. att. Desmitā vaicājuma realizācija

2.10.1. Relāciju algebras skaidrojums

desmitajam vaicājumam

Savienošana – apakšvaicājumā tiek savienotas divas tabulas PERSONAS un ALGAS

atbilstoši saites 1:N nosacījumiem, tas nozīmē, ka tie ģenerēti vienas tabulas rindu

dublikāti, kas savienoti ar otras tabulas rindām;

Projekcija – apakšvaicājumā no tabulām PERSONAS un ALGAS laukiem tiek atlasīti

izvēlēti atribūti: VARDS, UZVARDS, PERS_KODS, VALSTS,

SAKUMA_DATUMS, FAKTISKA_ALGA;

Selekcija – apakšvaicājumā ar nosacījumu operatora WHERE palīdzību, kurā iekļauts

operators AND tiek atlasītas personas, kuru alga ir virs 90;

Projekcija – pamata vaicājumā no iegūtās apakšvaicājuma tabulas tiek atlasīti atribūti:

VARDS, UZVARDS, PERS_KODS, VALSTS, SAKUMA_DATUMS,

FAKTISKA_ALGA;

Selekcija – pamata vaicājumā no apakšvaicājuma iegūtajiem rezultātiem ar

nosacījumu operatora WHERE palīdzību, kurā iekļauts operators AND tiek atlasītas

personas no Latvijas un algas sākuma datumu 20010101.

2.11. Vienpadsmitais vaicājums (pakārtots – SELECT)

Ar šī vaicājuma palīdzību izgūsim to pilsoņu uzvārdus no tabulas PERSONAS, kuru

faktiskā alga tabulā ALGAS sastāda 104,13. Vaicājuma rezultātu skatīt 18. attēlā, savukārt

vaicājuma teksts ir sekojošs:SELECT (SELECT B.UZVARDS

FROM PERSONAS BDBVS-5 © Arnis Kiršners – 2009 17

Page 18: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

WHERE B.ID=A.ID ) AS PILSONISFROM ALGAS AWHERE A.FAKTISKA_ALGA=104.13

18. att. Vienpadsmitā vaicājuma realizācija

2.11.1. Relāciju algebras skaidrojums

vienpadsmitajam vaicājumam

Projekcija – apakšvaicājumā no tabulas PERSONAS tiek atlasīts atribūts UZVARDS;

Selekcija – apakšvaicājumā no tabulas ALGAS ar nosacījumu operatora WHERE

palīdzību, tiek atlasītas personas ar identifikatoru, kurām atbilst algas identifikators;

Projekcija – pamata vaicājumā no tabulas ALGAS laukiem, kuriem bija identifikatori

ar tabulu PERSONAS tiek atlasīti atribūti: UZVARDS;

Selekcija – pamata vaicājumā ar nosacījumu operatora WHERE palīdzību, tiek atlasīti

ieraksti ar vērtību 104,13.

2.12. Divpadsmitais vaicājums (pakārtots – HAVING)

Frāzē HAVING var izmantot parastos kā arī korelējošus vaicājumus. Korelējošos

apakšvaicājumos ārējām atsaucēm jāizmanto tikai tie ārējie vaicājuma elementi, kuri var tikt

izmantoti HAVING frāzē. HAVING frāzē var izmantot tikai agregātfunkcijas , kur par

argumentiem kalpo vaicājuma tabulu atribūtu nosaukumi, vai arī atribūtu nosaukumi, kas tiek

izmantoti GROUP BY frāzē. Ar vaicājuma palīdzību tiek izgūts to personu uzvārdi no

tabulām PERSONAS un ALGAS, ja šo tabulu identifikācijas lauki sakrīt, grupējot atlasītos

datus pēc uzvārda un aprēķinot faktiskās algas summu, tiks izvadītas personu uzvārdi, kuru

algu summas pārsniedz 1200. Vaicājuma realizācija ir attēlota 19. attēlā, savukārt vaicājuma

teksts ir sekojošs: SELECT B.UZVARDS FROM PERSONAS B, ALGAS AWHERE A.ID=B.IDGROUP BY B.UZVARDSHAVING SUM(A.FAKTISKA_ALGA) > 1200

19. att. Divpadsmitā vaicājuma rezultāts

DBVS-5 © Arnis Kiršners – 2009 18

Page 19: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

2.13.

DBVS-5 © Arnis Kiršners – 2009 19

Page 20: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

3. Izpildes

plāna iegūšana un analīze

Sākotnēji, lai realizētu izpildes plāna iegūšanu jāveic plānu tabulas PLAIN_TABLE

izveide. Šī tabula ir noklusējuma tabula, kurā ar EXPLAIN PLAN operatoru palīdzību ievieto

rakstus, kas apraksta SQL izteiksmju izpildes secību vaicājumu komandās: SELECT,

INSERT, UPDATE un DELETE, ko izmanto Oracle optimizētājs. Izpildes plāna

komponentes satur sekojošo:

tabulu, uz kuru atsaucas vaicājumi, to sistematizēšana;

pieejas metode, ko pielieto vaicājumā;

tabula, kas attēlo vaicājumu sasaites metodes.

Plāna tabulu iespējams realizēt divos veidos:

Izpildīt SQL skriptu UTLXPLAN.SQL, kas uzģenerē parauga plāna tabulu ar

nosaukumu PLAN_TABLE.

Izpildīt CREATE TABLE komandu ar sekojošu lauku definēšanu un datu tipiem tajā:CREATE TABLE PLAN_TABLE ( STATEMENT_ID VARCHAR2(30), PLAN_ID NUMBER, TIMESTAMP DATE, REMARKS VARCHAR2(4000), OPERATION VARCHAR2(30), OPTIONS VARCHAR2(255), OBJECT_NODE VARCHAR2(128), OBJECT_OWNER VARCHAR2(30), OBJECT_NAME VARCHAR2(30), OBJECT_ALIAS VARCHAR2(65), OBJECT_INSTANCE NUMERIC, OBJECT_TYPE VARCHAR2(30), OPTIMIZER VARCHAR2(255), SEARCH_COLUMNS NUMBER, ID NUMERIC, PARENT_ID NUMERIC, DEPTH NUMERIC, POSITION NUMERIC, COST NUMERIC, CARDINALITY NUMERIC, BYTES NUMERIC, OTHER_TAG VARCHAR2(255), PARTITION_START VARCHAR2(255), PARTITION_STOP VARCHAR2(255), PARTITION_ID NUMERIC, OTHER LONG, DISTRIBUTION VARCHAR2(30), CPU_COST NUMERIC, IO_COST NUMERIC, TEMP_SPACE NUMERIC, ACCESS_PREDICATES VARCHAR2(4000), FILTER_PREDICATES VARCHAR2(4000), PROJECTION VARCHAR2(4000), TIME NUMERIC,

DBVS-5 © Arnis Kiršners – 2009 20

Page 21: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

QBLOCK_NAME VARCHAR2(30), OTHER_XML CLOB)

Parauga plāna tabulas atribūtu detalizētāks apraksts ir dots tabulā 1.1.

Plāna tabulas atribūtu apraksts1.1. tabula

Atribūta nosaukums Atribūta lauka skaidrojumsSTATEMENT_ID Vaicājuma identifikatorsPLAN_ID Plāna identifikatorsTIMESTAMP Plāna izpildes datums un laiksREMARKS Komentāri (līdz 4000 baitiem)OPERATION Izpildītās darbības nosaukums, vaicājuma izpildes solīOPTIONS Vaicājuma darbības vērtība

OBJECT_NODE Objekta atsauces nosaukums, kas tiek lietots, lai piekļūtu objektam (tabulas vai skata nosaukums)

OBJECT_OWNER Objekta īpašnieks, kas izveidojis shēmuOBJECT_NAME Objekta nosaukums OBJECT_ALIAS Objekta pieņēmumsOBJECT_INSTANCE Objekta pozīcijas numurs vaicājumāOBJECT_TYPE Objekta tipsOPTIMIZER Optimizētāja režīmsSEARCH_COLUMNS Atribūtu meklētājsID Plāna izpildes operācijas soļa identifikatorsPARENT_ID Nākošā plāna izpildes soļa identifikators, kas izmanto tekošā soļa rezultātuDEPTH Plāna izpildes dziļumsPOSITION Plāna izpildes kārtas numurs

COSTDarbības izmaksas, kas tiek vērtētas ar izmaksu bāzētu pieeju. Vaicājumiem, kas izmanto uz likumiem bāzētu pieeju šī lauka vērtība būs nulle (null). Izmaksas netiek noteiktas tabulu piekļuves darbībām

CARDINALITY Rindu skaits darbībai, ko vērtē ar izmaksu bāzētu pieejuBYTES Baitu skaits darbībai, ko vērtē ar izmaksu bāzētu pieejuOTHER_TAG Cita tipa specifiska informācija, kas varētu būt lietderīga lietotājam

PARTITION_START

Sākuma sadalījums, iespējamās lauka vērtības: n – SQL optimizātors ir identificējis sākuma sadalījumu; KEY – sākuma sadalījumu identificēs izpildes laikā; ROW LOCATION – sākuma sadalījumu identificēs izpildes

laikā, ieraksta vietu nosaka lietotājs, var izmantot globālo indeksu;

INVALID – sadalījuma diapazons ir tukšs.

PARTITION_STOP

Beigu sadalījums, iespējamās lauka vērtības: n – SQL optimizātors ir identificējis beigu sadalījumu; KEY – beigu sadalījumu identificēs izpildes laikā; ROW LOCATION – beigu sadalījumu identificēs izpildes

laikā, ieraksta vietu nosaka lietotājs, var izmantot globālo indeksu;

INVALID – sadalījuma diapazons ir tukšs.PARTITION_ID Solis, kas aprēķina sākuma un beigu sadalījuma laika pāra vērtībasOTHER Cita tipa specifiska informācija, kas varētu būt lietderīga lietotājamDISTRIBUTION SadaleCPU_COST Centrālā procesora (CPU) izmaksasIO_COST Diska datu ievades/izvades izmaksasTEMP_SPACE Brīvā telpa, izmanto hash - tabulu šķirošanaiACCESS_PREDICATES Piešķir izteiksmei, saīsinātus mainīgos (optimizē)

FILTER_PREDICATES Attēlo precīzus notikumus, kas un kāpēc notiek, kāpēc mainās procesora resursi, pat, ja plāna struktūra nemainās.

DBVS-5 © Arnis Kiršners – 2009 21

Page 22: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

PROJECTION PlānošanaTIME Izpildes laiksQBLOCK_NAME Bloka nosaukumsOTHER_XML XML kods ar servisa informāciju

Ar komandu AUTOTRACE iegūst optimizētāja plāna atskaites. Šī komanda izvada

ekrānā SQL izpildes plāna atskaites par jebkuru ievadīto vaicājumu. Atskaites tiek veidotas

katram SQL vaicājumam, izmantojot komandas SELECT, DELETE, UPDATE un INSERT.

Komanda AUTOTRACE pieļauj sekojošus uzstādījumus:

SET AUTOTRACE OFF (pēc noklusējuma) – atslēdz atskaites ģenerēšanu ekrānā;

SET AUTOTRACE ON EXPLAIN – ieslēdz optimizācijas izpildes plāna rezultātus;

SET AUTOTRACE ON STATISTICS – ieslēdz vaicājuma un statistikas izpildes

plāna rezultātus;

SET AUTOTRACE ON - ieslēdz vaicājuma, statistikas un optimizētāja izpildes plāna

rezultātus;

SET AUTOTRACE TRACEONLY - ieslēdz statistikas un optimizētāja izpildes plāna

rezultātus;

SET AUTOTRACE TRACEONLY EXPLAIN - ieslēdz optimizētāja izpildes plāna

rezultātu.

Ar komandas EXPLAIN PLAN palīdzību, iespējams, izveidoto plāna struktūru, katram

vaicājumam, saglabāt tabulā PLAN_TABLE, tālākai iegūto rezultātu analīzei. Šīs komandas

sintakse ir sekojoša:

EXPLAIN PLAN SET STATEMENT_ID = ‘plāna (vaicājuma) nosaukums’ FOR

vaicājuma teksts

Izpildes plāna analīzei tiek izmantots standarta vaicājums, kas izvada izpildes plāna

informāciju ar sekojošiem atribūtiem: ID, OPERATION, NAME, ROWS, BYTES, Cost

(%CPU) un TIME, šo lauku atšifrējumi ir doti tabulā 1.1. Sākotnēji, tiek attēlots vaicājums,

tad vaicājuma rezultāts, izpildes plāns un plāna izpildes secības koks, kā arī dots skaidrojums

attiecīgajam vaicājumam.

3.1. Izpildes plāns pirmajam vaicājumam

Pirmā vaicājuma izpildes plāna rezultātus, skatīt 20. attēlu, vaicājums izpildes kods ir

sekojošs:SELECT VALSTS_KODS, VALSTS_NOS, PILSONIBAS_NOSFROM VALSTIS

Izpildes plāna darbību secība:

DBVS-5 © Arnis Kiršners – 2009 22

Page 23: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

1. (1) TABLE ACCESS FULL – izgūst un apstrādā visus rakstus no tabulas

VALSTIS;

2. (0) SELECT STATEMENT – izvada ekrānā SELECT (projekcija – relāciju algebras

darbība) vaicājuma daļā norādītos atribūtus.

20. att. Izpildes plāns pirmajam vaicājumam

3.2. Izpildes plāns otrajam vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 21. attēlā.

21. att. Vaicājums, tā rezultāts un izpildes plāns otrajam vaicājumam

Izpildes plāna darbību secība:

1. (1) TABLE ACCESS FULL – izgūst un apstrādā visus rakstus no tabulas

PERSONAS, izmantojot filtru ar predikātu informāciju, jeb nosacījums, kuri atrodas

WHERE rindā;

2. (0) SELECT STATEMENT – izvada ekrānā SELECT (projekcija – relāciju algebras

darbība) vaicājuma daļā norādītos atribūtus.

DBVS-5 © Arnis Kiršners – 2009 23

Page 24: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

3.3. Izpildes plāns trešajam vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 22. attēlā.

22. att. Vaicājums, tā rezultāts un izpildes plāns trešajam vaicājumam

Izpildes plāna soļus, skatīt 23. attēlā un darbību secība:

1. (2) TABLE ACCESS FULL – izgūst un

apstrādā visus rakstus no tabulas

PERSONAS, izmantojot filtru un piekļuvi

ar predikātu informāciju, jeb nosacījumi,

kas atrodas WHERE rindā (1);

2. (4) INDEX (UNIQUE SCAN) – atgriež

vērtību ROWID darbībai (3);

3. (3) TABLE ACCESS (BY INDEX

ROWID) - atgriež attiecīgos rakstus no

tabulas ALGAS darbībai (1);

4. (1) NESTED LOOPS – savieno rakstus, kas iegūti no darbībām (2) un (3) un nodod

tos darbībai (0);

5. (0) SELECT STATEMENT – izvada ekrānā saņemtos rakstus no apvienotajām

tabulām.

DBVS-5 © Arnis Kiršners – 2009

23. att. Trešā vaicājuma izpildes soļi

24

Page 25: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Vaicājumi, kuros ir vairāk par trīs soļiem tiek attēloti grafiski. Taisnstūri ar baltu iekrāsojumu,

norāda uz rakstiem, kas iegūti iepriekšējos soļos, bet pelēki – darbības, kas izgūs datus no

tabulām.

3.4. Izpildes plāns ceturtajam vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 24. attēlā.

24. att. Vaicājums, tā rezultāts un izpildes plāns ceturtajam vaicājumam

Izpildes plāna soļus, skatīt 25. attēlā un darbību secība:

1. (5) TABLE ACCESS FULL – izgūst un apstrādā visus rakstus no tabulas

PERSONAS, izmantojot filtru ar predikātu informāciju, jeb nosacījumi, kas atrodas

WHERE rindā (3);

2. (4) INDEX (FAST FULL SCAN) – atgriež vērtības HASH JOIN darbībai (3);

DBVS-5 © Arnis Kiršners – 2009 25

Page 26: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

3. (3) HASH JOIN - savieno atlasītos rakstus no

tabulām PERSONAS un ALGAS darbībai (2);

4. (2) HASH (GROUP BY) – sagrupē rakstus,

darbībai (1);

5. (1) FILTER – atgriež tos rakstus, kas atbilst

šķirošanai iepriekšējā solī (0);

6. (0) SELECT STATEMENT – izvada ekrānā

saņemtos atlasītos rakstus.

3.5. Izpildes plāns piektajam

vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 26. attēlā.

26. att. Vaicājums, tā rezultāts un izpildes plāns piektajam vaicājumam

Izpildes plāna soļus, skatīt 27. attēlā un darbību secība:

DBVS-5 © Arnis Kiršners – 2009

25. att. Ceturtā vaicājuma izpildes soļi

26

Page 27: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

1. (2) TABLE ACCESS FULL – izgūst un

apstrādā visus rakstus no tabulas

PERSONAS, izmantojot filtru un piekļuvi ar

predikātu informāciju, jeb nosacījumi, kas

atrodas WHERE rindā (1);

2. (5) INDEX (UNIQUE SCAN) – atgriež

vērtību ROWID darbībai (4);

3. (4) TABLE ACCESS (BY INDEX ROWID)

- atgriež attiecīgos rakstus no tabulas ALGAS

darbībai (3);

4. (3) FILTER – atgriež tos rakstus, kas atbilst

šķirošanai iepriekšējā solī (1);

5. (1) FILTER – atgriež tos rakstus, kas atbilst šķirošanai iepriekšējā solī (0);

6. (0) SELECT STATEMENT – izvada ekrānā saņemtos atlasītos rakstus.

3.6. Izpildes plāns sestajam vaicājumam

Šī vaicājuma izpildes plāna rezultātus, skatīt 28. attēlu, vaicājums izpildes kods ir

sekojošs:SELECT DECODE(GROUPING(B.TIPS), 1, 'VISI TIPI KOPA', UPPER(B.TIPS)) AS

TIPI, DECODE(GROUPING(A.VALSTS_KODS), 1, 'VALSTIS KOPA', UPPER(A.VALSTS_KODS)) AS "VALSTIS", COUNT(*) AS "TIPU SKAITS"

FROM VALSTIS A, PERSONAS BWHERE (A.VALSTS_KODS=B.VALSTS) GROUP BY CUBE (B.TIPS, A.VALSTS_KODS)

28. att. Izpildes plāns sestajam vaicājumam

DBVS-5 © Arnis Kiršners – 2009

27. att. Piektā vaicājuma izpildes soļi

27

Page 28: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Izpildes plāna soļus, skatīt 29. attēlā un darbību secība:

1. (6) TABLE ACCESS FULL – izgūst un

apstrādā visus rakstus no tabulas PERSONAS,

izmantojot filtru ar predikātu informāciju, jeb

nosacījumi, kas atrodas WHERE rindā (4);

2. (5) INDEX (FULL SCAN) – atgriež vērtības

HASH JOIN darbībai (4);

3. (4) HASH JOIN - savieno atlasītos rakstus no

tabulām PERSONAS un VALSTIS darbībai (3);

4. (3) SORT (GROUP BY) – kārto rakstus, grupās

ar parametru GROUP BY darbībai (2);

5. (2) GENERATE (CUBE) – katrā grupā tiek

veidoti jauni raksti, kas satur GROUP BY visas iespējamās atlasītās vērtības,

rezultāti tiek nodoti nākamajai darbībai (1);

6. (1) SORT (GROUP BY) – kārto rindas rakstus grupās, jo CUBE un GROUP BY

nodrošina kopējo vērību izvadi pa iespējamām grupām darbībai (0);

7. (0) SELECT STATEMENT – izvada ekrānā saņemtos atlasītos apvienotos rakstus.

3.7. Izpildes plāns septītajam vaicājumam

Šī vaicājuma izpildes plāna rezultātus, skatīt 30. attēlu, vaicājums izpildes kods ir:SELECT A.TIPS, B.FAKTISKA_ALGA, SUM(B.FAKTISKA_ALGA)OVER (PARTITION BY A.TIPS) "TIPAM KOPA"FROM PERSONAS A, ALGAS BWHERE (A.ID=B.ID) AND (B.SAKUMA_DATUMS=20010501)

30. att. Izpildes plāns septītajam vaicājumam

DBVS-5 © Arnis Kiršners – 2009

29. att. Sestā vaicājuma izpildes soļi

28

Page 29: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Izpildes plāna soļus, skatīt 31. attēlā un darbību secība:

1. (4) TABLE ACCESS FULL – izgūst un apstrādā

visus rakstus no tabulas PERSONAS,

izmantojot filtru ar predikātu informāciju, jeb

nosacījumi, kas atrodas WHERE rindā (2);

2. (3) TABLE ACCESS FULL – izgūst un apstrādā

visus rakstus no tabulas ALGAS, izmantojot

filtru ar predikātu informāciju, jeb nosacījumi,

kas atrodas WHERE rindā (2);

3. (2) HASH JOIN - savieno atlasītos rakstus no tabulām PERSONAS un ALGAS

darbībai (1);

4. (1) WINDOW (SORT) – atlasa rakstus, grupās ar parametru SORT darbībai (0);

5. (0) SELECT STATEMENT – izvada ekrānā saņemtos atlasītos apvienotos rakstus.

3.8. Izpildes plāns astotajam vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 32. attēlā

32. att. Vaicājums, tā rezultāts un izpildes plāns astotajam vaicājumam

DBVS-5 © Arnis Kiršners – 2009

31. att. Septītā vaicājuma izpildes soļi

29

Page 30: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Izpildes plāna soļus, skatīt 33. attēlā un darbību secība:

1. (4) TABLE ACCESS FULL –

izgūst un apstrādā visus rakstus no

tabulas PERSONAS, izmantojot

filtru ar predikātu informāciju, jeb

nosacījumi, kas atrodas WHERE

rindā (2);

2. (3) TABLE ACCESS FULL –

izgūst un apstrādā visus rakstus no

tabulas ALGAS, izmantojot filtru ar

predikātu informāciju, jeb nosacījumi, kas atrodas WHERE rindā (2);

3. (2) HASH JOIN - savieno atlasītos rakstus no tabulām PERSONAS un ALGAS

darbībai (1);

4. (1) WINDOW (SORT) – atlasa rakstus, grupās ar parametru SORT darbībai (0);

5. (0) SELECT STATEMENT – izvada ekrānā saņemtos atlasītos apvienotos rakstus.

3.9. Izpildes plāns devītajam vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 34. attēlā.

34. att. Vaicājums, tā rezultāts un izpildes plāns devītajam vaicājumam

DBVS-5 © Arnis Kiršners – 2009

33. att. Astotā vaicājuma izpildes soļi

30

Page 31: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Izpildes plāna soļus, skatīt 27. attēlā un darbību secība:

1. (4) TABLE ACCESS FULL – izgūst un

apstrādā visus rakstus no tabulas ALGAS,

nodod darbību (3);

2. (7) TABLE ACCESS FULL – izgūst un

apstrādā visus rakstus no tabulas ALGAS ,

nodod darbību (6);

3. (3) SORT (AGGREGATE) – raksti tiek

sakārtoti, izmantojot agregāciju un nodoti

darbībai (2);

4. (6) SORT (AGGREGATE) – raksti tiek

sakārtoti, izmantojot agregāciju un nodoti darbībai (5);

5. (2) VIEW – izveidots skats, ko nodod darbībai (1);

6. (5) VIEW – izveidots skats, ko nodod darbībai (1);

7. (1) NESTED LOOPS – savieno tabulu rakstus un nodod darbībai (0);

8. (0) SELECT STATEMENT – izvada ekrānā saņemtos atlasītos rakstus.

3.10. Izpildes plāns desmitajam vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 37. attēlā

Izpildes plāna soļus, skatīt 36. attēlā un darbību secība:

1. (2) TABLE ACCESS FULL – izgūst un apstrādā visus rakstus no tabulas ALGAS,

izmantojot filtru un piekļuvi ar predikātu informāciju, jeb nosacījumi, kas atrodas

WHERE rindā (1);

2. (5) BITMAP (INDEX RANGE SCAN) –

atgriež vērtību IND1 darbībai (4);

3. (4) BITMAP (CONVERSION TO ROWIDS) –

atgriež vērtību ROWIDS darbībai (3);

4. (3) TABLE ACCESS (BY INDEX ROWID) -

atgriež attiecīgos rakstus no tabulas

RERSONAS darbībai (1);

5. (1) HASH (JOIN) – savieno rakstus no divām

tabulām un atgriež rezultātu darbībai (0);

6. (0) SELECT STATEMENT – izvada ekrānā

saņemtos atlasītos rakstus.

DBVS-5 © Arnis Kiršners – 2009

35. att. Devītā vaicājuma izpildes soļi

36. att. Desmitā vaicājuma izpildes soļi

31

Page 32: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

37. att. Vaicājums, tā rezultāts un izpildes plāns desmitajam vaicājumam

3.11. Izpildes plāns vienpadsmitajam vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 38. attēlā

Izpildes plāna darbību secība:

1. (1) TABLE ACCESS FULL – izgūst un apstrādā visus rakstus no tabulas

PERSONAS, izmantojot filtru ar predikātu informāciju, jeb nosacījums, kuri atrodas

WHERE rindā;

2. (1) TABLE ACCESS FULL – izgūst un apstrādā visus rakstus no tabulas ALGAS,

izmantojot filtru ar predikātu informāciju, jeb nosacījums, kuri atrodas WHERE

rindā;

3. (0) SELECT STATEMENT – izvada ekrānā SELECT (projekcija – relāciju algebras

darbība) vaicājuma daļā norādītos atribūtus.

DBVS-5 © Arnis Kiršners – 2009 32

Page 33: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

38. att. Vaicājums, tā rezultāts un izpildes plāns vienpadsmitajam vaicājumam

3.12. Izpildes plāns divpadsmitajam vaicājumam

Šī vaicājuma teksts, vaicājuma rezultāts un izpildes plāna tabula attēlota 32. attēlā

39. att. Vaicājums, tā rezultāts un izpildes plāns divpadsmitajam vaicājumam

DBVS-5 © Arnis Kiršners – 2009 33

Page 34: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Izpildes plāna soļus, skatīt 40. attēlā un darbību

secība:

1. (4) TABLE ACCESS FULL – izgūst un

apstrādā visus rakstus no tabulas

ALGAS un nodod darbībai (3);

2. (4) TABLE ACCESS FULL – izgūst un

apstrādā visus rakstus no tabulas

PERSONAS un nodod darbībai (3);

3. (3) HASH JOIN - savieno atlasītos

rakstus no tabulām PERSONAS un

ALGAS darbībai (2);

4. (2) HASH (GROUP BY) – sagrupē

rakstus, darbībai (1);

5. (1) FILTER – atgriež tos rakstus, kas atbilst šķirošanai iepriekšējā solī darbībai (0);

6. (0) SELECT STATEMENT – izvada ekrānā saņemtos atlasītos rakstus.

DBVS-5 © Arnis Kiršners – 2009

40. att. Divpadsmitā vaicājuma izpildes soļi

34

Page 35: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

4. Trīs

ieteikumu (HINTS) realizācija

Ar optimizētāja ieteikumu (Hints) palīdzību tiek realizēta SQL vaicājumu optimizācija,

mainot izpildes plāna izpildes soļus un nosacījumus. Datubāzu izstrādātājiem ir plašāks

priekšstats par savu izstrādāto datubāzi, tās struktūru, saitēm, datu tipiem un rakstu specifiku,

nekā to zina Oracle SQL koda optimizētājs. Tāpēc datubāzu izstrādātāji, ar ieteikumu

palīdzību, var realizēt daudz efektīvāku izpildes plānu secību, balstoties uz savām zināšanām.

Datubāzes administrējošais personāls ar ieteikumu palīdzību veido efektīvāku izpildes plāna

struktūru. Ieteikumus var izmantot, lai norādītu:

optimizācijas metodi SQL izteiksmei;

vaicājuma pieejas ceļu datu tabulai;

datu savienošanas kārtību savienošanas komandai;

datu savienošanas darbību savienošanas komandai.

Vaicājuma izpildes plāns tiek balstīts uz sekojošiem kritērijiem:

savienošanas kārtību;

savienošanas metodi;

pieejas metodi;

paralēlu procesu izpildi.

Veidojot ieteikumus SQL koda optimizācijai jāievēro sekojoši kritēriji pēc speciālistu

domām:

optimizācija jāveic tikai tad, kad citi līdzekļi ir neefektīvi vai nav devuši sagaidāmos

rezultātus;

ieteikumu veidošanas procesā ir jābūt ļoti uzmanīgiem, lai neizveidotu pretēju efektu,

kas radītu vaicājuma izpildes laika palielināšanos;

ieteikumu izmantošanas darbība ir vērsta uz vaicājuma iegūšanas veidu;

Oracle pieļauj tikai sintaktiski pareizi noformētus ieteikumus.

Ieteikumu izteiksmēm ir sekojoša sintakse:

{SELECT|INSERT|UPDATE|DELETE} /*+ieteikums [teksts] ieteikums [teksts] … */ , kur

SELECT, INSERT, UPDATE, DELETE – atslēgas vārdi, ar kuriem sākas vaicājums;

/* … */ - komentārs ar norādi;

+ - komentārs jāinterpretē ieteikumu sarakstam;

ieteikums – komentārs, kas tiek interpretēts kā ieteikums, vairākus ieteikumus

vaicājumā atdala no pārējiem ieteikumiem ar tukšumu;

DBVS-5 © Arnis Kiršners – 2009 35

Page 36: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

teksts – komentārs (paskaidrojošs teksts), ko pievieno ieteikumam.

4.1. Pirmā ieteikuma realizācija

Sākotnēji tiek izmantota optimizācijas metode /* CHOOSE */, pielietota tā tiek gandrīz

visiem vaicājumiem, bet acīm redzamu efektu šī metode nedod nevienam no divpadsmit

vaicājumiem. Tāpēc sīkāk par šo optimizācijas metodi vairāk netiek diskutēts, vismaz šī

uzdevuma ietvaros un izveidotajiem vaicājumiem.

Aplūkojot citu metodi, tādu /* FIRST_ROWS(n) */, kur parametrs n norāda vaicājumā

izmantojamo indeksu skaitu. Pielietojot indeksus vaicājumā ir iespējams paātrināt vaicājuma

izpildes laiku un samazināt vaicājuma izpildes izmaksas. Šī vaicājuma ietvaros optimizētājam

būtu efektīvi ieteikt izmantot indeksus, jo rezultāts jāiegūst pēc iespējas ātrāk, bet indeksa

izvēle paliek paša optimizētāja rokās, kas pats atrod piemērotāko no izveidotajiem indeksiem.

Vaicājuma rezultātu bez ieteikuma ar indeksiem, skatīt 41. attēlā.

41. att. Vaicājuma rezultāts bez ieteikuma izmantošanas

Modificējot vaicājumu un iekļaujot tajā ieteikumu, vaicājums ir sekojošs:

SELECT /*+ FIRST_ROWS(5) */ A.VARDS, A.UZVARDSFROM PERSONAS A, ALGAS BWHERE ((A.ID=B.ID) AND (A.VARDS='JANIS'))GROUP BY A.VARDS, A.UZVARDSHAVING COUNT(A.VARDS) > 3

Vaicājuma izpildes rezultātā, skatīt 42. attēlu, iegūst procesora noslodzes izmaksu

samazinājumu visos izpildes plāna soļos, kā arī samazinās apstrādāto baitu skaits katrā

izpildes plāna norises solī. Izmantojot ieteikumā izmantotos indeksus, panākts arī apstrādāto

rakstu skaita samazinājums. Kaut gan laika ieguvums nav novērojams, tas varētu būt

skaidrojams ar samērā nelielo rakstu skaita izmantošanu šī vaicājuma ietvaros. Iespējams, ja

DBVS-5 © Arnis Kiršners – 2009 36

Page 37: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

vaicājuma izmantoto rakstu skaits būtu lielāks, varētu novērot arī vaicājuma izpildes laika

samazinājumu.

42. att. . Vaicājuma rezultāts ar ieteikuma izmantošanu

4.2. Otrā ieteikuma realizācija

Šī ieteikuma ietvaros tiks mēģināts uzlabot vaicājumu, kura izpildes plāna rezultāti ir

DBVS-5 © Arnis Kiršners – 2009 37

Page 38: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

43. att. Vaicājuma rezultāts bez ieteikuma izmantošanas

redzami 43. attēlā. Uzlabotā vaicājuma teksts, vaicājumu izpilde un izpildes plāns attēloti 44.

attēlā. Šī vaicājuma ietvaros, izmantosim /*+ ORDER */ tipa ieteikuma metodi, kura norāda

tabulas pieejas secību, tādā pat veidā kā tiek formētas SQL vaicājumi FROM daļā.

Pievienosim vēl vienu ieteikuma metodi /*+ USE_NL (tabula1 tabula2) */, kas realizē

salīdzinājumu darbību .izmaksām ar tabulu apvienošanas metodi NESTED LOOPS.

Apvienojam abus ieteikumus vienā /*+ ORDER USE_NL (tabula1 tabula2) */ un izpildām

44. att. Vaicājuma rezultāts ar ieteikuma izmantošanu

DBVS-5 © Arnis Kiršners – 2009 38

Page 39: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

vaicājumu. Vaicājuma izpildes rezultātā iegūst savādāku izpildes plāna secību, bet savukārt

iegūtie uzlabojumu ir pavisam minimāli. Nedaudz uzlabotas procesora noslodzes izmaksas,

samazināti apstrādāto rakstu skaits, kas pilnīgi neietekmē vaicājuma izpildes kopējo laiku. Arī

šī vaicājuma optimizācija nav devusi kardinālus uzlabojumus, atliek vienīgi secināt, ka

optimizācijas procesa automatizācija, t.n. metodes, ko izvēlas rīks ir efektīvas un neprasa

administratora vai eksperta iejaukšanos dotā procesa optimizācijā.

DBVS-5 © Arnis Kiršners – 2009 39

Page 40: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

4.3. Trešā ieteikuma realizācija

Šī ieteikuma realizācijas ietvaros aplūkosim vaicājumu, kuram jau pats optimizātors ir

izveidojis ieteikumu tā izpildes procesā. Vaicājumu, tā izvades rezultātus un izpildes plānu,

skatīt 45. attēlā. Tad no izpildes plāna ir redzams, ka optimizātors SELECT apakšvaicājumā ir

ievietojis ieteikumu, tādā veidā nodrošinot automātisku ieteikumu izveidi.

45. att. Vaicājums, tā izpildes rezultāts un izpildes plāns

Optimizēsim doto vaicājumu, iekļaujot tajā /*+ ALL_ROWS */ ieteikumu, kas optimizē

sistēmas darbu ar labāko caurlaides mērķi. Veicot šo uzlabojumu, rezultātā izpildes plāna

secībā izmaiņas netika novērotas. Pavisam minimāli ir samazinājušas procesora noslodzes

izmaksas, apstrādāto baitu un rakstu skaits. Rezultātā kardināls ieguvums netika sasniegts.

Ieteikumu izpildes rezultātus var aplūkot 46. un 47. attēlos.

46. att. Ieteikuma realizācijas attēlojums no Toad 8.5 videsDBVS-5 © Arnis Kiršners – 2009 40

Page 41: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

47. att. Vaicājums, tā izpildes rezultāts un izpildes plāns

DBVS-5 © Arnis Kiršners – 2009 41

Page 42: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

5. Secināju

mi

Šis darbs tika realizēts izmantojot Windows Vista 32-bit operētājsistēmu un Oracle

Database 10.2.0.3.0 Enterprice Edition datubāzu vadības sistēmu (DBVS), kas paredzēta tieši

šai operētājsistēmai. Šīs lietas nākas pieminēt, jo attiecīgajā operētājsistēmā un DBVS veicot

SQL optimizāciju, tā atšķiras no DBVS versijām (8i, 9i un 10.1.0.0g), kas tika aplūkotas

lekciju gaitā un izdales materiālos. Sākot no 10.1g versijas tika pārstrādāta PLAN_TABLE

noklusējuma tabula, tajā tika pievienoti jauni atribūtu lauki. Optimizātora parametros vairs

nav iespējams iestādīt optimizētāja vērtības: CHOOSE, FIRST_ROWS, ALL_ROWS un

RULE. Tās tiek iestādītas automātiski vaicājuma analīzes procesā, kur optimizātors izvēlas

piemērotāko variantu. Tāpat tiek nerekomendēts izmantot uz likumiem balstītu optimizāciju

(rule base optimization, RBO), jo tās uzturēšana vairs netiek atbalstīta, sākot no 10g versijas.

Sākot no versijas 10.2g realizēta ir hash (GROUP BY) funkciju izpilde un iespēja izgūt

sistēmas statistiku ar trasēšanas datnes 10053 palīdzību, kas ieslēdz sistēmas statistikas

sadaļu.

Datu bāzes transformācija no MS Access 2007 vides uz Oracle vidi noritēja bez

problēmām, ja nu vienīgi tabulas PERSONAS transformēšanas laiks ieilga, tās apjoma dēļ.

Vaicājumu izveide un realizācija sākotnēji tika veikta Toad 8.5 vidē, bet tā kā šis rīks neuztur

SQL optimizātora 10.2g versijas plāna tabulas attēlojumu automātiskā režīmā, tikai ierakstot

datus PLAIN_TABLE ar EXPLAIN PLAN SET, tad rezultātu attēlošanai izmantoju veco

labo SQL*Plus, lai ekonomētu savu laiku.

Analizējot izpildes plāna secību, vaicājumiem, kuru izpildes soļu secība bija lielāka par

četri, tika veikts arī grafisks to attēlojums, jo darba autors uzskata, ka tādā veidā ir

uzskatamāk izprast vaicājumā notiekošos procesus.

Šī darba ietvaros nācās diezgan aktīvi padarboties ar literatūru, kas šai Oracle versijai

(10.2.0.3.0), tieši ieteikumu optimizācijas jomā ir diezgan skopa. Kā jau tika minēts iepriekš ir

veikta virkne uzlabojumu, lai jaunajos Oracle produktos atvieglotu administratoru «dzīvi»,

vaicājumu optimizācijas process ir piedzīvojis lielu automatizāciju, salīdzinot ar iepriekšējām

Oracle versijām (8i, 9i un 10.1i).

Veicot neskaitāmus vaicājumus ar dažādām optimizācijas metodēm tajos, no kuriem trīs

ieteikumi ir izklāstīti darba gaitā, daba autors tā arī nespēja atrast efektīvu ieteikuma metodi,

kas kardināli uzlabotu vaicājuma efektivitātes izpildi. Iegūtos uzlabojumus var uzskatīt par

DBVS-5 © Arnis Kiršners – 2009 42

Page 43: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

neefektīviem, jo laika patēriņš, tos izstrādājot cilvēkam, ir daudzas reizes lielāks, kā doto

procesu uzdot izpildīt pašam vaicājumam (datoram).

Var tikai secināt, ka jaunākajās Oracle versijās iebūvētais vaicājumu optimizātors strādā

diezgan efektīvi. Cenšoties izveidot kardināli labāku ieteikumu, darba autoram tā arī tas

neizdevās, tas vedina uz domu vai optimizātors strādā efektīvi un risina vaicājumu

optimizācijas uzdevumus, vai arī darbā aplūkotie vaicājumi bija diezgan viegli uztverami

optimizētājam, kā rezultātā vaicājumi tika izpildīti tā optimālākajā veidā.

Aplūkojot lekciju gaitā izklāstīto materiālu un iepriekšējo gadu kolēģu veikumu, rodas

iespaids, ka Oracle izstrādātāji ir spēruši diezgan ievērojamus soļus vaicājumu optimizācijas

laukā, kas protams ir apsveicami, bet varbūt darba autoram rodas maldīgs iespaids. Šāds darba

iznākums ir radies tāpēc, ka vaicājumu sintakse ir veidota pēc pareiziem principiem, kas

optimizētājam nerada liekas problēmas, bet par to varēs spriest pēc vairāku kolēģu paveiktiem

darba rezultātiem, darbojoties ar Oracle versiju 10.2.3.0g vai jaunāku.

DBVS-5 © Arnis Kiršners – 2009 43

Page 44: Praktiskais darbs Nr.1 - Web viewMūsu intensīvās dzīves apstākļos arvien vairāk pieaug glabājamo datu apjomi. Tāpēc tiek patērēts arī lielāks laika patēriņš, lai izgūtu

Izmantotās literatūras saraksts

1. Prof. Jānis Eiduks «Lekciju konspekti» - 2009

2. J. Perry, G.Post «Introduction to Oracle 10g» - 2006, Pearson Prentice Hall, 698 p.

3. Scoot Urman, Ron Hardman, Michael McLaughlin «Oracle Database 10g PL/SQL

Programming» - 2004, Oracle press, 792 p.

4. Narayan S. Umanath, Richard W. Scamell «Data modeling and database design» -

2007, Thomson course tehnology, 698 p.

5. Teorey T., Lightstone S., Nadeau T. Database modeling and design – 2006, Morgan

Kaufmann Publisher, 275 p.

6. Льюис Дж. «Oracle Основы стоимостной оптимизации» - 2007, Питер, 527 с.

DBVS-5 © Arnis Kiršners – 2009 44