D B. Kyselypuut ja ekvivalenssi

Samankaltaiset tiedostot
Kyselyiden optimointi

Kyselypuut ja ekvivalenssi. Kyselyiden optimointi. Kyselypuut ja ekvivalenssi. Kyselypuut ja ekvivalenssi. R & G Chapter 12-15

Helsingin yliopisto/tktl Kyselykielet, s 2006 Optimointi Harri Laine 1. Kyselyn optimointi. Kyselyn optimointi

Relaatiotietokantojen perusteista. Harri Laine Helsingin yliopisto

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto. Opettajien nimet: Opiskelijoiden pääaineet

HELIA TIKO-05 1 ( 12) ICT03D Tieto ja tiedon varastointi Martti Laiho

Kyselyt: Lähtökohtana joukko lukuja Laskukaava kertoo miten luvuista lasketaan tulos soveltamalla laskentaoperaatioita

Helsingin yliopisto, TKTL Tietokantojen perusteet, k 2000 SQL- osa Harri Laine 1. SQL-valintaehto. SQL-valintaehto.

D B. Tietokannan hallinta kertaus

Relaatioalgebra. Kyselyt:

Insert lauseella on kaksi muotoa: insert into taulu [(sarakenimet)] values (arvot)

SQL - STRUCTURED QUERY LANGUAGE

Relaatioalgebra. Relaatioalgebra. Relaatioalgebra. Relaatioalgebra - erotus (set difference) Kyselyt:

TIEDONHALLINTA - SYKSY Luento 10. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

select tulostietomäärittely from taulukkeet [where valintaehdot] [group by ryhmitystekijät] [having ryhmärajoitteet] [order by järjestysperusta]

joukko operaatioita, joilla relaatioista voidaan muodostaa uusia relaatioita joukko opin perusoperaatiot yhdiste, erotus, ristitulo, leikkaus

Liitosesimerkki Tietokannan hallinta, kevät 2006, J.Li 1

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

HELIA TIKO-05 1 (17) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Kyselyn yleisrakenne:

Helsingin yliopisto/ tktl D Tietokantojen perusteet, s 2000 Relaatioalgebra. Harri Laine 1. Relaatioalgebra.

1. a) Laadi suoraviivaisesti kyselyä vastaava optimoimaton kyselypuu.

Harjoitustehtävä 1. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. Harjoitustehtävä 2. SQL kysely

Tietokantojen perusteet k2004helsingin yliopisto/tktl Tietokantojen perusteet, s 2005 SQL-perusteet. Harri Laine 1. SQL tietokantakieli

Harjoitustehtävä 1. Harjoitustehtävän 1 ratkaisu. Harjoitustehtävä 1. Relaatioalgebra -liitokset (join) Liitos

Lisätään avainarvo 6, joka mahtuu lehtitasolle:

Helsingin yliopisto Tietojenkäsittelytieteen laitos (H.Laine) Tietokantojen perusteet. Liitteenä: Tiivistelmä SQL-syntaksista

FROM-lausekkeessa voidaan määritellä useampi kuin yksi taulu, josta tietoja haetaan: Tuloksena on taululistassa lueteltujen taulujen rivien

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2007 SQL:n perusteet. Harri Laine 1. SQL tietokantakieli. SQL tietokantakieli

Muita tietokantaobjekteja. Näkymät, synonyymit, indeksointi, valtuudet ja systeemihakemisto

MUITA TIETOKANTAOBJEKTEJA NÄKYMÄT, SYNONYYMIT, INDEKSOINTI, VALTUUDET JA SYSTEEMIHAKEMISTO

Helsingin yliopisto/ tktl DO Tietokantojen perusteet, s 2000 Relaatioalgebra Harri Laine 1. Relaatioalgebra

Liitokset - haut useaan tauluun

D B. Tietokannan hallinta - kurssin tavoite. Kurssilla opitaan periaatteet. Edellytyksenä osallistumiselle on Tietokantojen perusteiden hallinta

HELIA 1 (15) Outi Virkki Tiedonhallinta

SQL. ! nykystandardi SQL3 eli SQL'99. ! CREATE TABLE, ALTER TABLE ja DROP TABLE. ! CREATE VIEW ja DROP VIEW. ! CREATE INDEX ja DROP INDEX

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

Hakukyselyt: SELECT * FROM taulu WHERE sarake1 = Malli Nimi [WHERE sarake1 LIKE M% ] [WHERE BETWEEN ehto1 AND ehto2] [WHERE sarake1 IN/= (alikysely)]

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

CSE-A1200 Tietokannat

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

HELIA TIKO-05 1 (22) ICT03D Tieto ja tiedon varastointi E.Räty, O.Virkki

Joko tunnet nämän Oracle10g SQL:n piirteet? Kari Aalto Saariston IT

Kyselyiden käsittely. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1

D B. Kyselyjen käsittely ja optimointi. Kyselyn käsittelyn vaiheet:

3. Taulujen määrittely ja muuttaminen

Tietokannan hallinta. Kevät 2004 Jan Lindström R&G Chapter 1

Helsingin yliopisto, Tietojenkäsittelytieteen laitos Tietokantojen perusteet, , H.Laine

Tiedostorakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

HAAGA-HELIA Heti-09 1 (12) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Näkymät

Helsingin yliopisto/tktl Tietokannan hallinta, s Harri Laine 1 D B. Kyselyjen käsittely ja optimointi

CSE-A1200 Tietokannat

määritellä ja muokata tietokantaa ja sen käyttöoikeuksia virittää tietokannan talletusrakenteita hakea tietoa tietokannasta

TIEDONHALLINTA - SYKSY Luento 11. Hannu Markkanen /10/12 Helsinki Metropolia University of Applied Sciences

4. Kyselyjen käsittely ja optimointi

3. TAULUJEN MÄÄRITTELY JA MUUTTAMINEN

Tällä viikolla. Kotitehtävien läpikäynti Aloitetaan Pelifirman tietovaraston suunnittelu Jatketaan SQL-harjoituksia

Excel-taulukkoon X- ja Y-sarakkeisiin tallennettujen koordinaattien muuntaminen paikkatietokohteiksi

Kirjoita jokaiseen erilliseen vastauspaperiin kurssin nimi, tenttipäivä, oma nimesi (selkeästi), opiskelijanumerosi ja nimikirjoituksesi

HELIA 1 (14) Outi Virkki Tiedonhallinta

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

HELIA 1 (14) Outi Virkki Tiedonhallinta

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

SQL-kielen perusteet. Tietokantojen perusteet

Tietokantojen perusteet, syksy 1999 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

SELECT-lauseen perusmuoto

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

Helsingin yliopisto, tktl DO Tietokantojen perusteet, kevät 2000 SQL- osa Harri Laine 1. SQL-yhteenvetofunktiot. SQL-yhteenvetofunktiot

CSE-A1200 Tietokannat

HAAGA-HELIA TIKO-05 1 (19) ICT23a Tietokannan suunnittelu ja toteutus O.Virkki

Jokaisella tiedostolla on otsake (header), joka sisältää tiedostoon liittyvää hallintatietoa

Harjoitustyö. CSE-A1200 Tietokannat! Jasse Lahdenperä! ! Henri Nurmi! !

Helsingin yliopisto/tktl Kyselykielet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1. Kyselyjen käsittely

CS-A1150 Tietokannat CS-A1150 Tietokannat / 34

SQL-KYSELYJEN OPTIMOINNISTA. Niko Jalkanen Joensuun yliopisto Tietojenkäsittelytiede Pro gradu tutkielma

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

HAAGA-HELIA Heti-09 1 (17) ICT05 Tiedonhallinta ja Tietokannat O.Virkki Suorituskyky

Paikkatiedon käsittely 6. Kyselyn käsittely

CS-A1150 Tietokannat CS-A1150 Tietokannat / 39

Makrojen mystinen maailma lyhyt oppimäärä

SQL:N PERUSTEET MARKKU SUNI

HELIA TIKO-05 1 (15) ICT03D Tieto ja tiedon varastointi Räty, Virkki

Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi. Esimerkit laskettu JMP:llä

Tietokannat. CREATE TABLE table(col1,col2,... ); Luo uuden taulun. CREATE TABLE opiskelijat(opnumero,etunimi,sukunimi);

Lohdutus - tietokantadokumentti

4.3.4 SQL kyselyt... 45

Oraclen syvin ydin. Pertti Eiskonen Yleisradio Oy Tietokanta-asiantuntija. OUGF syysseminaari 2002 Sivu 1

Tietokannat II -kurssin harjoitustyö

OpenOffice.org Base 3.1.0

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

D B. Kyselyjen käsittely ja optimointi. Kyselyjen käsittely ja optimointi

Tietokantakurssit / TKTL

Summamuuttujat, aineiston pilkkominen ja osa-aineiston poiminta 1

Access-kyselyt. Luetteloinnin kehittämispäivä Mia Kujala

Mikä on tietomalli? Relaatiomallin käsitteitä 1/2 (kuva 5.1) Relaatiomallin taustaa

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Kirjoita kuhunkin erilliseen vastauspaperiin kurssin nimi, tentin päiväys, oma nimesi, syntymäaikasi ja nimikirjoituksesi.

Transkriptio:

Kyselypuut ja ekvivalenssi Sisäisessä esityksessä kyselyt esitetään kyselypuuna lehdissä taulut juuressa lopputulos välisolmuina suoritettavat operaatiot s=select p=project j=join p (teos.nimi, kirjanro) s(kurssi.nimi= Tietokannan hallinta ) s(materiaali.kirja=teos.nimi) s(kurssi.nro=materiaali.kurssi) select teos.nimi, kirjanro from kurssi, materiaali, teos where kurssi.nro=materiaali.kurssi and materiaali.kirja=teos.nimi and materiaali.tyyppi= P and kurssinimi= Tietokannan hallinta s(materiaali.tyyppi= P ) x x kurssi materiaali teos 1

Kyselypuut ja ekvivalenssi Optimoitu kyselypuu valinnat mahdollisimman aikaisin ristitulot liitoksiksi s=select p=project j=join p (teos.nimi, kirjanro) select teos.nimi, kirjanro j(materiaali.kirja=teos.nimi) from kurssi, materiaali, teos where kurssi.nro=materiaali.kurssi and materiaali.kirja=teos.nimi and materiaali.tyyppi= P and kurssinimi= Tietokannan hallinta j(kurssi.nro=materiaali.kurssi) teos s(kurssi.nimi= Tietokannan hallinta ) s(materiaali.tyyppi= P ) kurssi materiaali 2

Kyselypuut ja ekvivalenssi Kyselypuun muokkauksessa vaihdetaan operaatioiden järjestyksiä tai korvataan jokin operaatio toisella operaatiolla Muokatun kyselypuun pitää tuottaa sama tulos kuin aiemman Kaksi operaatiosarjaa ovat ekvivalentteja, jos ne tuottavat saman tuloksen lähtötaulujen kaikilla instansseilla ekvivalenssisäännöt määrittelevät millaiset muunnokset ovat sallittuja ilman, että tulos muuttuu 3

Kyselypuut ja ekvivalenssi Valinnat voidaan yhdistää tai purkaa sisäkkäisiksi σ c1 c2... ck (R) σ c1 (σ c2 (... σ ck (R)..)) Valinnat ovat vaihdannaisia (commutative) σ c1 ( σ c2 (R)) σ c2 (σ c1 ( R)) Peräkkäisten projektioiden lopputuloksen määrä viimeisin projektio π a1 (R) π a1 (π a2 (..(R))) 4

Kyselypuut ja ekvivalenssi Ristitulo ja liitos ovat kommutatiivisia, osapuolten järjestys voidaan vaihtaa (kumpi on ulompi) RxS SxR R S S R Ristulo ja liitos ovat assosiatiiviset (suoritusjärjestys on vaidettavissa) Rx(SxT) (RxS)xT 5

Kyselypuut ja ekvivalenssi Projektion ja valinnan järjestys on vaihdettavissa kunhan kaikki valinnassa esiintyvät sarakkeet ovat mukana projektiossa σ c (π a (R)) π a (σ c (..(R))) Valinta ja ristitulo voidaan yhdistää liitokseksi, jos kyseessä on liitosehto R c S σ c (RxS) Valinta voidaan siirtää tapahtuvaksi ennen ristituloa tai liitosta, mikäli se koskee vain näiden argumenttia σ c (RxS) σ c (R)xS 6

Kyselypuut ja ekvivalenssi Yleisesti valinta σ c (RxS) voidaan jakaa tauluja R ja S koskeviin osiin sekä liitosehtoon eli σ c (RxS) σ c (σ cr (R) x σ cs ( S)) Projektio voidaan jakaa osiin jotka suorittetaan ennen ristituloa π a (RxS) π a1 (R) x π a2 (S) Projektio voidaan jakaa osiin, jotka suoritetaan ennen liitosta, jos liitosehdon sarakkeet säilyvät π a (R S) π a1 (R) π a2 (S) 7

Heuristisia muokkaussääntöjä Konjunktiiviset valinnat (and-yhdistetyt) puretaan sarjaksi yksittäisiä valintoja Painetaan valinnat niin alas puussa kuin mahdollista Järjestellään lehtisolmut edulliseen järjestykseen ensin mahdollisimman rajaavat valinnat = pieni rivijoukko odotettavissa tulokseksi Yritetään välttää ristituloja Yhdistetään ristitulo ja seuraava valinta liitokseksi Yhdistetään operaatiot, jotka voidaan suorittaa yhdellä algoritmilla Vältellään välitulosten kirjoitusta 8

Rajaavuus Rajaavuutta (selectivity) mitataan rajaussuhteella (reduction factor): tuloksen rivimäärä / lähtöjoukon rivimäärä Rajaavuuden arviointi ilman tilastotietoja on hankalaa Kun testataan avaimen yhtäsuuruutta suhteessa vakioon tuloksen koko on enintään 1 ja rajaussuhde 1/taulun koko (jos taulun kokoa ei tiedetä, sen tilalla voidaan käyttää taululle tehdyn tilanvarauksen kokoa, tai jotain vakiota, jos tätäkään ei tiedetä.) sarakke=vakio valinta tuottaa tasaisen jakautuman oletuksella rajaussuhteen 1/sarakkeen arvojen lukumäärä. (jos sarakkeella on hakemisto voi arvojen lukumäärä olla tiedossa, tietotyypin määritys voi rajata arvojoukon esim. numeric(2) enintään 100 arvoa, järjestelmä voi käyttää oletusarvoa esim. 1/10, jos sillä ei ole parempaa tietoa) 9

Rajaavuus Täsmällisemmän tiedon saanti rajaavuudesta edellyttää tilastotietoa: taulun koko (riveinä, sivuina) sarakkeen arvojen lukumäärä (riittää, jos oletetaan tasainen jakautuma) sarakkeen arvojakautuma (histogrammi) käyttökelpoinen, jos jakautuma on hyvin vino. 10

Esimerkki kyselypuusta Tutkitaan kyselyä SELECT X.NAME, Y.NAME FROM EMPLOYEE X, EMPLOYEE Y WHERE X.SUPERSSN = Y.SSN UNION SELECT X.NAME,Z.NAME FROM EMPLOYEE X, EMPLOYEE Y, EMPLOYEE Z WHERE X.SUPERSSN = Y.SSN AND Y.SUPERSSN = Z.SSN 11

Esimerkki kyselypuusta union p (X.name, Z.name) p (X.name, Y.name) s (X.superssn= Y.ssn and Y.superssn=Z.ssn) s(x.superssn= Y.ssn) x x x employee Z employee X employee Y employee X employee Y 12

Esimerkki kyselypuusta Täydennettynä tuloksen kokoarvioilla <700 union <500 p (X.name, Y.name) <500 s(x.superssn= Y.ssn) 250000 x 500 p (X.name, Z.name) <200 s (X.superssn= Y.ssn and Y.superssn=Z.ssn) 125000000 x 500 250000 x employee Z 500 500 500 employee X employee Y employee X employee Y 13

Esimerkki kyselypuusta Korvataan ristitulo ja siitä seuraava valinta liitoksilla union p (X.name, Z.name) p (X.name, Y.name) j(y.superssn=z.ssn) j(x.superssn= Y.ssn) j(x.superssn= Y.ssn) employee Z employee X employee Y employee X employee Y 14

Esimerkki kyselypuusta täydennettynä kokoarvioilla <700 union <200 p (X.name, Z.name) <500 <200 p (X.name, Y.name) j(y.superssn=z.ssn) <500 <500 500 j(x.superssn= Y.ssn) j(x.superssn= Y.ssn) employee Z 500 500 500 500 employee X employee Y employee X employee Y 15

Kustannuslaskentaoptimointi Laskenta edellyttää tilastoaineistoa Tilastoaineisto pitää uudistaa kun tietokantaan on tehty merkittävästi muunnoksia. Tilastoaineistoon kuuluvat esim. taulujen ja indeksien koot sivujen lukumäärä, täyttösuhde sarakkeen pienin ja suurin arvo, mahdollinen arvojen jakautumatieto 16

Kustannuslaskentaoptimointi Esimerkiksi Oraclessa (versio 8) on komento Analyze, jolla kustannuslaskennassa tarvittavan tilastotiedon saa tuotettua Analyze table opiskelija estimate statistics; laskee taulukohtaisia tilastotietoja oletuskokoisen otoksen perusteella (otoskoon voi myös antaa) Analyse table opiskelija compute statistics for columns aloitusvuosi size 10; laskee sarakkeelle tilastotietoja käymällä läpi koko taulun, tuottaa myös jakautumatiedon (arvoväli jaettu 10 osaan) Uudemmissa versioissa gather_x_stats lauseet, esim gather_table_stats, gather_index_stats,. 17

Kustannuslaskentaoptimointi Oraclessa optimoijan tekemään suunnitelman saa selville lauseella EXPLAIN PLAN esim: EXPLAIN PLAN SET STATEMENT_ID = 'Raise in Chicago' INTO plan_table FOR UPDATE emp SET sal = sal * 1.10 WHERE deptno = (SELECT deptno FROM dept WHERE loc = 'CHICAGO'); Yllä suunnitelma kirjoitetaan tässä plan_table nimiseen tauluun. Taulu täytyy olla luotu ennen lauseen käyttöä sen rakenne on seuraava: 18

Kustannuslaskentaoptimointi CREATE TABLE plan_table ( statement_id VARCHAR2(30), timestamp DATE, remarks VARCHAR2(80), operation VARCHAR2(30), options VARCHAR2(30), object_node VARCHAR2(128), object_owner VARCHAR2(30), object_name VARCHAR2(30), object_instance NUMERIC, object_type VARCHAR2(30), optimizer VARCHAR2(255), search_columns NUMERIC, id NUMERIC, parent_id NUMERIC, position NUMERIC, cost NUMERIC, cardinality NUMERIC, bytes NUMERIC, other_tag VARCHAR2(255), other LONG); tieto taulussa puumaisena rakenteena, parent_id kertoo mikä operaatio suoritetaan rivillä kuvattavan jälkeen 19

Kustannuslaskentaoptimointi esim hierarkkinen kysely SELECT LPAD(' ',2*(LEVEL-1)) operation operation, options, object_name, position FROM plan_table START WITH id = 0 AND statement_id = 'Raise in Chicago' CONNECT BY PRIOR id = parent_id AND statement_id = 'Raise in Chicago'; voisi tuottaa tuloksen OPERATION OPTIONS OBJECT_NAME POSITION ---------------------------------------------------------- UPDATE STATEMENT 1 FILTER 0 TABLE ACCESS FULL EMP 1 TABLE ACCESS FULL DEPT 2 20

Kustannuslaskentaoptimointi Kustannuslaskentaoptimoinnissa tuotetaan vaihtoehtoisia toteutussuunnitelmia ja lasketaan niille kustannus. Se, jonka kustannus on pienin valitaan. Kaikkia vaihtoehtoja ei lasketa, Esimerkiksi useiden liitosten järjestyksen määräämiseksi käytetään ns. vasensyvää puuta (left deep tree). Tässä liitosrakenne on muotoa ((A join B) join C) join D... eli valmiiseen liitostulokseen liitetään taulu kerrallaan lokaalia optimointia: mikä liitos kannattaa tehdä ensin, mikä kannattaa liittää sitten tämän tulokseen, jne liitosrakenteita muotoa (A join B) join (C join D) ei edes arvioida 21

Kustannuslaskentaoptimointi mahdollisia liitosjärjestyksiä tauluille A,B,C,D join join ei mahdollinen liitosjärjestys tauluille A,B,C,D join D join A join join C join D join join A B C B C B D A vasensyvät puut 22

Kustannuslaskentaoptimointi Vaikka optimoijalla onkin tiedossa tilastoaineistoa se voi silti päätyä ratkaisuun, joka ei ole välttämättä paras kyseiseen tilanteeseen Monissa tkhj:ssä käyttäjä pystyy kyselyyn upotettujen vihjeiden avulla vaikuttamaan optimoijan toimintaan, alla esimerkki Oracle vihjeestä: SELECT /*+ ORDERED USE_NL(customers) */ accounts.balance, customers.last_name, customers.first_name FROM accounts, customers WHERE accounts.custno = customers.custno; = Liitä taulut from-osassa annetussa järjestyksessä käyttäen sisäkkäisiä silmukoita customers sisempänä tauluna 23