HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Samankaltaiset tiedostot
HELIA 1 (15) Outi Virkki Tiedonhallinta

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

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

Tietokannan hallintajärjestelmän (DBMS) palvelut ja rakenne

Luento 2: Tiedostot ja tiedon varastointi

HELIA 1 (14) Outi Virkki Tiedonhallinta

Tieto ohjelmassa ja tietokoneella

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

HAAGA-HELIA Heti-09 1 (14) ICT05: Tiedonhallinta ja Tietokannnat O.Virkki Transaktionkäsittely

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

Tietohakemisto ja Transaktionkäsittely

HELIA 1 (16) Outi Virkki Tietokantasuunnittelu

HELIA 1 (14) Outi Virkki Tiedonhallinta

D B. Tietokannan hallinta kertaus

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

oheishakemistoja voi tiedostoon liittyä useita eri perustein muodostettuja

Tietokanta (database)

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

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

Tietokannanhallintajärjestelmä (DBMS)

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

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

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

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

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

IIO30220 Database Management / Tietokannan hallinta TAPAHTUMIEN HALLINTA JOUNI HUOTARI ( )

HELIA 1 (11) Outi Virkki Tiedonhallinta

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

HELIA 1 (17) Outi Virkki Tiedonhallinta

Helsingin yliopisto/tktl Tietokantojen perusteet, s 2006 Tiedon mallinnus ja tietokannat. Harri Laine 1. Tietokanta.

Fyysinen suunnittelu

NORMALISOINTI TIETOJEN MALLINNUS JOUNI HUOTARI & ARI HOVI

FYYSINEN SUUNNITTELU

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

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

HELIA 1 (13) Outi Virkki Tietokantasuunnittelu

TIETOKANTOJEN PERUSTEET MARKKU SUNI

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

3. Tietokannan hakemistorakenteet

3. Tietokannan hakemistorakenteet

TERADATAN JA SAS DI STUDION YHTEISELO CASE LÄHITAPIOLA

Liitosesimerkki. Esim R1 R2 yhteinen attribuutti C. Vaihtoehdot

Tietokantakurssit / TKTL

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

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

HELIA 1 (1) Outi Virkki Tiedonhallinta :43

HELIA 1 (12) Outi Virkki Tiedonhallinta

Opettajana Mika Sorsa, HAMK:n ammatillisen opettajakoulutuksen opetusharjoittelija

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

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

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

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

Näkymät ja tiedon suojaus

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

FYYSINEN SUUNNITTELU

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

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

SELECT-lauseen perusmuoto

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

Luento 1 Tietokonejärjestelmän rakenne

Suorituskyvyn pullonkaulojen löytäminen ja optimointi v 1.0. Ilkka Myllylä

SQL - STRUCTURED QUERY LANGUAGE

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

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

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

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

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

Tietojärjestelmä tuotantoympäristössä. Sovellusohjelmat Helsingin ammattikorkeakoulu Stadia / Tekniikka ja liikenne Vesa Ollikainen

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Kyselyn yleisrakenne:

Tietokantojen suunnittelu, relaatiokantojen perusteita

D B. Levytiedostojen käsittely. Levytiedostojen käsittely

SQL:N PERUSTEET MARKKU SUNI

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

D B. Tiedostojen käsittely

2. Haet työntekijöiden tiedot etunimen mukaan nousevasti järjestettyinä. (ORDER BY) SELECT * FROM employees ORDER BY firstname ASC;

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

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

Luento 1 Tietokonejärjestelmän rakenne

Luento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus

Algoritmit 1. Luento 5 Ti Timo Männikkö

Helsingin yliopisto/tktl Kyselykielet, s 2006 Tietokantaoperaatioiden toteutuksesta Harri Laine 1. Tiedostorakenteet.

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

2 Konekieli, aliohjelmat, keskeytykset

Samanaikaisuuden hallinta. tietokantapalvelimessa. Tiedonhallintaa. Alkuper. versio: Jaakko Rantanen Pieniä korjauksia: Jouni Huotari 26.2.

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

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

D B. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa. Poistot. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa

Tikon Ostolaskujenkäsittely/Web-myyntilaskutus versio 6.4.0

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

TIETOKANTOJEN PERUSTEET OSIO 11 MARKKU SUNI

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

TIETOKANTOJEN PERUSTEET OSIO 14 MARKKU SUNI

Contents AdsML ympäristö... 2 AdsML Testi ympäristö... 2 AdsML tuotantoympäristö... 2 AdsML käyttöliittymä... 3 Kirjautuminen...

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

Transkriptio:

HELIA 1 (21) Luento 3.1 Suorituskyvyn optimointi... 2 Suunnittele... 3 Tiedonhallintajärjestelmän rakenne... 4 SQL-käsittelijä... 5 Parsinta... 5 Optimointi... 5 Tilan käsittelijä... 5 Puskurin käsittelijä (Buffer Manager)... 5 Tiedoston käsittelijä (File Manager)... 5 Transaktion käsittelijä... 5 Samanaikaisuuden hallinta (Concurrency Control)... 5 Toipumisen hallinta (Recovery Control)... 5 Suorituskyvyn lähteet... 6 SQL-komentojen viritys... 7 Tekninen ympäristö... 8 Fyysisen tason ratkaisut... 9 Saantimenetelmät... 11 Indeksit / Hakemistot... 12 Kokeile ja testaa... 20 Naularaportit... 20

HELIA 2 (21) Suorituskyvyn optimointi Mitä tietokannan suunnittelija voi tehdä 1. Kyselyjen virittäminen 2. Fyysisen tason suunnittelu / talletusratkaisut Ä Fyysisen tason ratkaisut vaikuttavat kyselyjen virittämiseen Suorituskyvyn mittareita Vasteaika (response time) Yksittäisten operaatioiden suorittamiseen kuluva aika mittausyksikkö sekunti 1. CPU 2. Levy I/O 3. Lukko-odotus Suoritusteho (troughput) Operaatioiden lukumäärä aikayksikköä kohti mittausyksikkö: tapahtumaa / sekunti Levytilan käyttö Levyjen hintojen laskun myötä ei enää kriittinen tekijä

HELIA 3 (21) Suunnittele Ä Sovelluksen kriittinen tieto Iso tapahtumatiheys Iso volyymi = rivimäärä Iso volyymin muutos = nopea kasvu Kilpailu samasta resurssista Esim. id:n generointi Ä Transaktioiden analyysi Mitä tauluja käsitellään Mitkä kentät ovat mukana valintaehdoissa ja taulujen yhdistämisessä Mihin kenttiin haku / päivitys kohdistuu Mitä indeksejä on käytettävissä + RDBMS:n erityispiirteet

HELIA 4 (21) Tiedonhallintajärjestelmän rakenne SQL- liittymä Sovellusohjelma SQL- komentoja SQL- käsittelijä (SQL Processor) Tapahtuman käsittelijä (Transaction Manager) Tilan käsittelijä (Storage Manager) DATA & METADATA

HELIA 5 (21) SQL-käsittelijä Parsinta SQL-lauseen jäsennys Optimointi Suoritussuunnitelman valinta Tilan käsittelijä Puskurin käsittelijä (Buffer Manager) Keskusmuistin käsittely Pyytää lohkot tiedostonkäsittelijältä ja sijoittaa muistiin Palauttaa lohkot tiedostonkäsittelijälle Tiedoston käsittelijä (File Manager) Tiedostojen sijainti ja saantimenetelmät Hakee / kirjoittaa tarvittavat lohkot Transaktion käsittelijä Samanaikaisuuden hallinta (Concurrency Control) Eheyden ja erillisyyden hallinta (Concistency & Isolation) Ä Lukitukset Toipumisen hallinta (Recovery Control) Jakamattomuuden ja pysyvyyden hallinta (Atomicity & Durability) Ä Lokit

HELIA 6 (21) Suorituskyvyn lähteet 1. SQL-lauseiden säätäminen 2. Indeksien säätäminen opt. 3. Levytilankäytön säätäminen disk 4. Puskurien säätäminen buff.

HELIA 7 (21) SQL-komentojen viritys Ä Yleensä tehokkain tapa parantaa suorituskykyä Tietokantaohjelmoinnin alaa... Ä Optimaalinen muoto riippuu Käytettävissä olevista indekseistä Liitoksessa mukana olevien taulujen koosta Käytettävissä olevasta keskusmuistin määrästä Hallintajärjestelmän käyttämästä kyselyjen optimointialgoritmista Ä Tarkkoja ohjeita kyselyjen kirjoittamiseksi vaikea antaa Mahdollista indeksien käyttö hauissa ja liitoksissa (ellei tarkoituksena ole poimia kaikki tietueita) Hyödynnä joukko-operaatioita (INTERSECT, UNION) Vältä alikyselyjä käytä liitoksia niiden sijasta jos mahdollista Vältä DISTINCT määrettä, vaatii usein tulosrelaation rivien järjestämistä (sort) Suunnittele työnjako tietokantapalvelimen ja asiakassovelluksen välille Ä Tietokannan hallintajärjestelmäkohtaisia optimointiohjeita Esim. taulujen järjestys FROM.. JOIN -osassa

HELIA 8 (21) Tekninen ympäristö Ä Teknisten komponenttien suorituskyky määrää tietyn tiedonhallintajärjestelmäinstanssin suorituskyvyn ylärajan Talletusvälineet (levy- ja nauha-asemat) Laiteohjaimen nopeus Tiedonsiirtoväylän kapasiteetti Prosessorien nopeus ja lukumäärä Keskusmuistin määrä Käytettävissä olevan levymuistin määrä Ä Usein halvin keino parantaa suorituskykyä on hankkia lisää laitekapasiteettia...

HELIA 9 (21) Fyysisen tason ratkaisut Ä Tavoitteena on löytää loogisen tason rakenteelle riittävän tehokas fyysisen tason toteutus 1. Indeksien (hakemistojen) käyttö 2. Taulujen ja indeksien kokomääritykset 3. Taulujen, indeksien ja lokien sijoittelu 4. Sekvenssit (mm. Oraclessa) 5. Denormalisointi? Ä Tietokannan suorituskykyyn vaikuttaa yleensä eniten suoritettavien levyoperaatioiden (luku, kirjoitus) määrä Ä Tiedonhaun hinta Keskusmuistista X ns Levyltä peräkkäishakuna 2 ms / sivu Levyltä poimintana 20 ms / sivu Sivukoko 2 4 KB Ä Rinnakkaisuuden hyödyntäminen + Resurssin jonotuksen välttäminen Ä Fyysisen talletusrakenteen optimointi yksittäisen tietokantaoperaation näkökulmasta saattaa olla kokonaisuuden kannalta tehoton!

HELIA 10 (21) Saantimenetelmät 1. Peräkkäishaku 2. Indeksoitu peräkkäistiedosto 3. Hajautus

HELIA 11 (21) Indeksit / Hakemistot Sarakkeen tai sarakeyhdistelmän perusteella muodostettu aputietorakenne, jonka tarkoituksena on nopeuttaa tiedonsaantia. Datatiedosto (Data File)sisältää loogiset tietueet Hakemistotiedosto / Indeksitiedosto (Index File) sisältää indeksitietueet AUTO HAKEMISTO Rowid Auto# Merkki...... Merkki rowid 1 1011 Volvo Audi 2 2 0235 Audi Renault 3 3 0011 Renault Toyota 4 4 0551 Toyota Volvo 1 Ä Nopeuttaa kyselyjä Ä Hidastaa päivityksiä Indeksoidun ominaisuuden arvon perusteella tehtävä haku nopeutuu muutama levyhaku vrs. koko taulun läpikäynti Ä Tietty indeksi saattaa nopeuttaa yhtä kyselyä ja hidastaa toista Haittoja: Å Testaa (kattavasti)! Ä Vie levytilaa Ä Indeksin sivusta voi tulla jonotettava resurssi (pullonkaula)

HELIA 12 (21) Indeksityypit 1. Päähakemisto (primary index) 2. Toisiohakemisto (secondary index) 3. Klusteri-indeksi Indeksin talletusrakenteet 1. Yksitasoiset 2. Puu-rakenteiset

HELIA 13 (21) Päähakemisto (Primary index) Datatiedosto on lajiteltu peräkkäistiedosto joka on järjestetty pääavaimen mukaan Pääindeksin hakukenttänä on datatiedoston avain Pääindeksin hakukentän arvot ovat uniikkeja / yksilöiviä Autotiedosto Pääindeksi 1 0011 Renault 0011 1 2 0235 Audi 0235 2 3 0551 Toyota 0551 3 4 1011 Volvo 1011 4 5 1200 Renault 1200 5...

HELIA 14 (21) Ryhmähakemisto / Järjestyshakemisto (Clustering index) Indeksin hakukenttä >< tiedoston avainkenttä Datatiedosto on järjestetty klusteri-indeksin hakukentän mukaan (ei siis pääavaimen mukaan) Klusteri-indeksin hakukentän ei tarvitse sisältää uniikkiarvoja, ts. useampi kuin yksi tietue voi vastata indeksin hakukentän arvoa Autotiedosto Klusteri-indeksi 1 0235 Audi Audi 1 2 0011 Renault Renault 2 3 1200 Renault Renault 3 4 0551 Toyota Toyota 4 5 1011 Volvo Volvo 5... Datatiedostolla voi olla vain yksi päähakemisto tai ryhmähakemisto!

HELIA 15 (21) Toisiohakemisto (Secondary index) Indeksi on määritelty datatiedoston kentästä, jonka mukaan datatiedostoa ei ole järjestetty (ei pääavaimen eikä klusteriavaimen mukaisesti) Toisiohakemiston hakukentän ei tarvitse sisältää uniikkiarvoja Toisioavaimeksi valitaan kenttä / kenttiä, joiden perusteella tietoa haetaan usein Esim. Henkilön nimi Autotiedosto Hakemisto 1 0011 Renault Audi 2 2 0235 Audi Renault 1 3 0551 Toyota Renault 5 4 1011 Volvo Toyota 3 5 1200 Renault Volvo 4...

HELIA 16 (21) Mitä indeksoida? 1. Pääavaimet Ä mahd. automaattinen indeksointi 2. Viiteavaimet 3. Muut kentät? Ä Valintakriteeri WHERE... Ä Liitoskriteeri JOIN ON... (tyypillisesti viiteavain) Ä Lajittelu ORDER BY... Ä Ryhmittely GROUP BY... 4. Paksut indeksit Ä Mukana kaikki transaktiossa tarvittavat tiedot! Huom! Ä Kenttien järjestys merkitsevää sarakeyhdistelmää käyttävässä indeksissä! Ä Esim. Oraclessa indeksi hyödynnettävissä sarakkeiden osoittamassa järjestyksessä Ä mahd. omat indeksit yhdistelmäindeksin yksittäisille kentille Ä Usein päivittyvän kentän indeksointi voi tehdä indeksistä pullonkaulan esim. tilin saldo

HELIA 17 (21) Oraclen syntaksi

HELIA 18 (21) Käyttösuosituksia Keskikokoisiin ja isoihin tauluihin Pieniin (*) tauluihin indeksi vain pääavaimelle, (mikäli se tarvitaan rivin yksilöitävyyden säilyttämiseksi!) (*) koko taulu voidaan lukea yhdellä I/O-operaatiolla; < 5 fyysistä lohkoa; lohkon koko RDBMS- ja OS-kohtainen Kun usein haettavan tulosrelaation koko on pieni (< n.20%) suhteessa kyselyn pohjana olevan taulun / taulujen kokonaisrivimäärään l. poiminta tehokkaampi kuin peräkkäishaku Ei usein päivitettäviin kenttiin (?) Ä Dokumentoi! 1. nimi 2. rakenne 3. tarkoitus Ä Pudota ja luo uudestaan aika-ajoin Ä Pudota ennen massapäivitystä ja luo sen jälkeen uudestaan; (ei pudota pääavaimista huolehtivia indeksejä)

HELIA 19 (21) Kokeile ja testaa Ä Tietokantatuotteissa erillisiä työkaluja suorituskyvyn selvittämiseen Naularaportit spike report vasteaika NAULA syyllinen uhri CPU I/O CPU Q Lock Q I/O Q Ä Syyllisen vasteaika koostuu lähinnä tietokannan palveluajasta CPU / SQL - paljon SQL-kutsuja I/O / Path - paljon sivuja / SQL-kutsu Ä Uhrin vasteaika koostuu lähinnä jonotusajasta Q-CPU - paljon CPU-jonotusta Q-I/O - paljon levytaltiojonotusta Q-Lock - paljon lukko-odotusta

HELIA 20 (21) Oraclessa: SQL_Trace tallentaa suoritustietoa TKPROF käsittelee em. suoritustietoa EXPLAIN ANALYZE suoritussuunnitelma rivien ketjuuntuminen Ä Lisäksi tilastotietoa Levytilan käytöstä (myös tietohakemistossa) Indekseistä (myös tietohakemistossa) Levy I/O:sta Transaktioista Lukituksista Lokitiedoista