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



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

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

HELIA TIKO-05 SQL-TRANSAKTIOT 1 ( 12) ICT03D Tieto ja tiedon varastointi

D B. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus. Transaktionhallinta - samanaikaisuus

HELIA 1 (14) Outi Virkki Tiedonhallinta

Helsingin yliopisto/tktl Tietokannan hallinta, kevät Harri Laine 1 D B. Transaktionhallinta - samanaikaisuus

Transaktiot - kertausta

Transaktionhallinta. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1

D B. Transaktionhallinta - samanaikaisuus

Tietohakemisto ja Transaktionkäsittely

5.2 Samanaikaisuuden hallinta

Transaktionhallinta. Transaktionhallinta. Transaktionhallinta. R & G Chapter 17

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

Seminaari: Keskusmuistitietokannat. Keskusmuistitietokantojen samanaikaisuuden hallinta Ilkka Pullinen

R 2 [0] ei ole likainen luku, sillä avaimelle 0 on jo palautettu sen alkuperäinen arvo.

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

SQL-transaktiot Opettajan opas

CS-A1150 Tietokannat CS-A1150 Tietokannat / 43

Samanaikaisuuden hallinta MySQLtietokannanhallintajärjestelmässä. Vesa Tähkävuori

Proseduurit, funktiot ja herättimet - esimerkkeinä Oracle, SQL Server, MySQL ja OCELOT. Jouni Huotari S2008

PROSEDUURIT, FUNKTIOT JA HERÄTTIMET - ESIMERKKEINÄ ORACLE, SQL SERVER, MYSQL JA OCELOT JOUNI HUOTARI K2009

Helsingin yliopisto/tktl Tietokannan hallinta, kevät Harri Laine 1 D B. Transaktionhallinta. Transaktionhallinta. Transaktionhallinta

5.2 Samanaikaisuuden hallinta

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

Muita transaktioiden hallintamenetelmiä

Maiju Mykkänen Susanna Sällinen

Samanaikaisuuden hallinta

Web-palveluiden transaktionaalinen koostaminen

5. Tapahtumien hallinta. Esim. pankkitilisovelluksen proseduuri tilisiirto(t1, t2, x), joka siirtää x mk tililtä t1 tilille t2:

Samanaikaisuuden hallinta Snapshot Isolationin avulla

HELIA 1 (15) Outi Virkki Tietokantasuunnittelu

CSE-A1200 Tietokannat

Elvytys. R & G Chapter Tietokannan hallinta, kevät 2006, J. Li 1

Hajautettujen transaktioiden hallinta

D B. Transaktionhallinta

Keskusmuistitietokantojen samanaikaisuuden hallinta

TIETOKANNAT JOHDANTO

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

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

CS-A1150 Tietokannat CS-A1150 Tietokannat / 47

TIETOKANTOJEN PERUSTEET MARKKU SUNI

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

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

Tilannevedoseristyvyydessä esiintyvät eristyvyysanomaliat

Käyttöjärjestelmät: poissulkeminen ja synkronointi

Tietokannanhoitaja DBA (Database Administrator) ja tietokannan hallinta

Sisältö. Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat. Abstrakti tietokantamalli. Tietoalkio ACID. Transaktion tilat. Abstrakti tietokantamalli

Tosiaikajärjestelmät Luento 11: Tosiaikatietokannat

Sovellusarkkitehtuurit

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

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

TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Relaatiomalli ja -tietokanta

NAVITA BUDJETTIJÄRJESTELMÄN ENSIASENNUS PALVELIMELLE

Samanaikaisuuden hallinta. Optiot transaktionaalisissa työnkuluissa

DBTechNet. DBTech VET. SQL Transactions. Teoriaa ja käytännönharjoituksia. Suomeksi

Web Services tietokantaohjelmoinnin perusteet

Tiedonhallintajärjestelmän rakenne ja Suorituskyky

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä

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

Subversion-ohje. Linux Traffic Control-käyttöliittymä Ryhmä paketti2

SQL Transaktiot Opettajan opas

HELIA 1 (15) Outi Virkki Tiedonhallinta

HELIA 1 (19) Outi Virkki Tietokantasuunnittelu

TIETOKANTOJEN PERUSTEET MARKKU SUNI

Java ja tietokannan käsittely (JDBC)

HSMT Tietokannoista. Ville Leppänen. HSMT, c Ville Leppänen, IT, Turun yliopisto, 2008 p.1/32

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

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

SQL-transaktioiden käytännön teoriaa ja harjoituksia

Oracle ebs versionvaihto OUGF seminaari / Jyrki Koski Oy Abase Consulting Ab

HOJ Haja-aiheita. Ville Leppänen. HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/10

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Transaktioiden eristyvyys

käännös käännösvaiheessa tarkasettaan linkitys

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Hajauta yhdistäen ja yhdistä hajauttaen: Web Services

SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito. SQL - Tietokannan ylläpito

TIES542 kevät 2009 Yhteismuistisamanaikaisuus

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

CLOUDBACKUP TSM varmistusohjelmiston asennus

Tietokannanhallintajärjestelmä (DBMS)

POLKU LUOKKAKAAVIOISTA TAULUJEN TOTEUTUKSEEN

Visma Avendon asennusohje

FYYSINEN SUUNNITTELU

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

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

Unix-perusteet. Tiedosto-oikeudet

Versiohallinta ja Subversion Maunu Tuomainen

Case TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä ! Java luokkia n. 5000

MrSmart 8-kanavainen lämpötilamittaus ja loggaus, digitoija ja talletusohjelma

TIETOKANNANHOITAJA DBA (DATABASE ADMINISTRATOR) JA TIETOKANNAN HALLINTA

HOJ J2EE & EJB & SOAP &...

2 Konekieli, aliohjelmat, keskeytykset

Visma Business AddOn Konsernikäsittely. Käsikirja

TIEDONHALLINNAN PERUSTEET - SYKSY 2013

Transkriptio:

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

Transaktiot eli tapahtuma(sarja)t 2 Transaktio (transaction) on DBMSn näkemä sovelluksen l. asiakasprosessin toimenpide (LUW, Logical Unit of Work) atominen sarja luku- ja kirjoitusoperaatioita Useiden samanaikaisten asiakasprosessien hallinta on DBMSn keskeisin tehtävä levyoperaatiot tiheitä mutta hitaita CPUn kannattaa ajaa monia ohjelmia samanaikaisesti Huom: tapahtuma-sana esiintyy myös event-termin suomennoksena! Siis aivan eri asian.

Esimerkki LUW = tilisiirto SQL API select...update...select... update... commit; Mitä DBMS tekee tämän pohjalta: aloita lue tilin ta saldo sa kirjoita sa = sa-100 lue tilin tb saldo sb kirjoita sb = sb+100 vahvista ja monia muita samaan aikaan... 3

Atomisuus Transaktio suoritetaan aina jakamattomana eli atomisena (atomic) Kaikki tai ei mitään! 4

Samanaikaisuus (concurrency) 5 Asiakasprosessi lähettää transaktion ja voi olettaa, että se ajetaan "kuin yksinäisenä" Samanaikaisten asiakasprosessien luku/kirjoitus-operaatiot lomitetaan: LUW-tulosten oltava samat kuin yksin ajettuna Tietokannan jokaisen eheysehdon pitää täyttyä Ydinasiat: lomittaminen ja vikasietoisuus Samanaikaisuusaste (kpl-määrä) on yksi tärkeä tietokantapalvelimen tehon mitta

Esimerkki SQL API select...update...select... update... commit; LUW = tilisiirto Transaktio TX1 aloita lue tilin ta saldo sa kirjoita sa = sa-100 lue tilin tb saldo sb kirjoita sb = sb+100 vahvista merkintä R(A) W(A) R(B) W(B) 6

Samanaikaiset tehtävät TX1 siirtää 100 B:n tilitä A:n tilille. TX2 lisää molempiin 5% korkoja. TX1: begin A= A+100, B= B-100 end TX2: begin A= 1.05*A, B= 1.05*B end Ei ole mitään tietoa tai takeita näiden transaktioiden suoritusjärjestyksestä. Lopputuloksen täytyy ehdottomasti olla riippumaton suoritusjärjestyksestä. 7

Ajoitus DBMS suorittaa nämä jollakin ajoituksella. Ajoituksen (scheduling) vaihtoehtoja: 1 TX1: A= A+100, B= B-100 TX2: A= 1.05*A, B= 1.05*B Edellinen oli OK, mutta seuraava ajoitus ei: 2 TX1: A= A+100, B= B-100 TX2: A= 1.05*A, B= 1.05*B 8

Sarjallistuva ajoitus Ajoitus 1 DBMSn näkemänä: TX1: R(A),W(A), R(B),W(B) TX2: R(A),W(A), R(B),W(B) Ajoitus 2 DBMSn näkemänä: TX1: R(A),W(A), TX2: R(A),W(A), R(B),W(B) R(B),W(B) Jälkimmäistä ajoitusta ei saa sallia. Ajoitukset jakautuvat siis sallittuihin eli sarjallistuviin ja kiellettyihin. 9

Ristiriidan välttäminen Millaiset ajoitukset DBMSn on kiellettävä? TX1: R(A),W(A), TX2: R(A),W(A), R(B),W(B) R(B),W(B) 10 Transaktioiden väliset riippuvuudet: TX1:n tuloksen sanotaan A TX1 TX2 riippuvan TX2:sta, koska B TX1 käyttää tietoa (tieto B), jonka TX2 on viimeksi kirjoittanut. (Esimerkissä on myös käänteinen riippuvuus TX1 TX2) Syklinen riippuvuus kielletty. ajoitus on

Riippuvuudet ja ajoitus Ajoitus 1 DBMSn näkemänä: TX1: R(A),W(A), R(B),W(B) TX2: R(A),W(A), R(B),W(B) A TX1 TX2 B Ajoitus 2 DBMSn näkemänä: TX2 riippuu TX1stä 11 TX1: R(A),W(A), TX2: A TX1 TX2 B R(A),W(A), R(B),W(B) R(B),W(B) Sykli: TX1 riippuu TX2sta ja TX2 riippuu TX1stä

Sarjallistuvuus 12 TX1, TX2, TX3 Sarjallinen (serial) ajoitus toimii kuin "köyhän talon porsaat", mutta siinä on vain yksi samanaikainen asiakas. Tapahtumajoukon TX1, TX2,... ajoitus on sarjallistuva (serializable), jos se tuottaa saman eheän lopputuloksen kuin jokin sarjallinen ajoitus (kaikista eri järjestysvaihtoehdoista). Voi olla monta samanaikaista asiakasta. Tällä on vankka teoreettinen tausta, jota ei nyt tarkastella lähemmin.

Transaktio sovelluksessa Transaktion alku on joko eksplisiittinen: komento begin transaction implisiittinen: ei komentoa, vaan ohjelman(osan) käynnistys tai edellisen transaktion päättyminen Transaktio päättyy joko vahvistukseen: komento commit peruutukseen: komentoon rollback tai DBMSn suorittamaan automaattiseen peruutukseen, jos ei vahvistusta tule sovellus TX DBMS 13

Transaktioita käytettävä Mm. ODBC ja JDBC, Accessin Jet Engine,... käyttävät autocommit - tilamuuttujaa, jonka arvot ovat on tai off. Oletusarvo on on. Autocommit ei sovi normaaliin sovellukseen! Yleensä on annettava aluksi komento set autocommit off 14

Miten kävisi esimerkissä? set autocommit on!!! lue tilin ta saldo sa kirjoita sa = sa-100 lue tilin tb saldo sb linjahäiriö/system crash/... kirjoita sb = sb+100 15

16 Samanaikaisuuden hallinnan toteutustekniikoita DBMSien tarjoamat toteutustavat: lukitus versiointi Itse ohjelmoitu toteutustapa: aikaleimojen hallinta tarpeelliseksi katsotut tiedon osat (esim. rivi) varustetaan aikaleima-sarakkeella (on myös ylläpidettävä) jokaisen luku- ja päivityskäskyn yhteydessä päätellään aikaleimoista onko joku muu ollut käsittelemässä ko. tietoja samaan aikaan

17 Tekniikkana lukitus DBMS voi hallita samanaikaisuutta esim. lukitsemalla tietoja (nk. pessimistinen menetelmä). Lukon piirteitä: aste (yksityinen/jaettu/...), rakeisuus (predikaatti/rivi/sivu/taulu), ym. lukulukko on jaettu (S shared), muut saavat lukea, kirjoituslukko yksityinen (X exclusive), poissulkeva. Käytännössä vanhin ja yleisin tekniikka Tuotteiden toteutuksissa merkittäviä eroja mm. tehokkuudessa ja muistin käytössä

Lukkojen hallinta Eri DBMSt noudattavat erilaisia tekniikoita Lukkokirjanpito erikseen DBMSn muistialtaassa n. 100B/lukko syö paljon muistia, jos on rivikohtainen (on useilla DBMSilla sivu- tai taulukohtainen) lukkojen laajentamisen riski (lock escalation) 18 Lukkokirjanpito riviin vietynä (Oraclen tapa) rivikohtainen, ei laajentamista taulurivejä muistissa [ots 1672] sarake1 sarake2... [ots 0752] sarake1 sarake2... pros. no... 1009 0752 2137...

Lukkiuma Lukkiuma eli lukkiutuma (deadlock) voi syntyä, jos nk. odotusverkossa on sykli: TX1 TX2 nk. "wait-for-graph" TX1 on lukinnut tiedon X ja haluaisi tiedon Y TX2 on lukinnut tiedon Y ja haluaisi tiedon X Syklissä voi olla useitakin transaktioita Purku: DBMS valitsee uhri-transaktion ja pysäyttää sen 19

Kaksivaiheinen lukitseminen Kaksivaiheinen lukituskäytäntö (2PL = two phase locking) tarkoittaa lukkiumia torjuvaa ohjelman suoritustapaa Transaktio TX noudattaa 2PL-käytäntöä, jos kaikki lukitusoperaatiot (sekä S että X) TXssa edeltävät ensimmäistä lukon vapautusta Miten tätä noudatetaan käytännössä: kaikki lukot pidetään commitiin asti. Tämä on nk. ankara (strict) 2PL. 20

Tekniikkana versiointi Jokainen TX käsittelee omaa versiotaan (eli omia kopioita) taulusivuista Vasta commit-hetkellä DBMS ilmoittaa mahdollisen konfliktin: että joku muu on ehtinyt muuttaa "originaali"sivua Periaate: nopein voittakoon, muut aloittakoot alusta Versiointi on nk. optimistinen menetelmä ("ei kai nyt tule konfliktia"), lukinta pessimistinen ("kumminkin nyt tulee konflikti") 21

DBMS-toteutuksista Lukinta on yleisintä Oracle DB2 Sybase Informix SQL Server OpenIngres Interbase Progress... (Oracle tekee osittaista versiointia.) Versiointi on uutta ja vielä harvinaista Solid Server Lukinta on valittavissa vaihtoehtoisesti. Solidissa voi taulukohtaisesti sanoa käytetäänkö lukkoja vai versiointia. On hyvin vaarallista sotkea näitä samaan tietokantaan! Mimer (ruotsalainen)... 22

ACID-periaate Atomicity: Transaktio on jakamaton, joko kaikki komennot suoritetaan tai ei yhtään. Consistency: Jos tietokanta on aluksi ristiriidaton ja jokainen TX on sarjallistuva, tietokanta jää ristiriidattomaksi. Isolation: Transaktion suoritus eristetään muista samanaikaisista transaktioista. Durability: Jos transaktio vahvistetaan, sen tekemät päivitykset jäävät pysyviksi. 23

Muita seikkoja Lokin hallinta, Checkpoint Transaktioiden sisäkkäisyys ja ketjutus Pitkät tapahtumat Hajautetut transaktiot Miksi juuri SQL-palvelin Myös ODMG noudattaa SQL-standardin määrittelyjä, mm. eristyvyystasoja 24