{"id":30878,"date":"2019-10-31T21:37:56","date_gmt":"2019-10-31T18:37:56","guid":{"rendered":"https:\/\/prohoster.info\/blog\/tranzaktsii-i-mehanizmy-ih-kontrolya\/"},"modified":"2019-10-31T21:37:56","modified_gmt":"2019-10-31T18:37:56","slug":"tranzaktsii-i-mehanizmy-ih-kontrolya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tranzaktsii-i-mehanizmy-ih-kontrolya","title":{"rendered":"Tehingud ja nende kontrollimehhanismid","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h2>Tehingud<\/h2>\n<p><\/p>\n<h4>Tehing on andmete t\u00f6\u00f6tlemise j\u00e4rjestikune operatsioonide jada, millel on algus ja l\u00f5pp.<\/h4>\n<p>\nTehing on j\u00e4rjestikune lugemise ja kirjutamise operatsioonide t\u00e4itmine. Tehingu l\u00f5petamine v\u00f5ib olla kas muudatuste salvestamine (committing) v\u00f5i muudatuste t\u00fchistamine (rollback). Andmebaasi kontekstis on tehing m\u00f5ned p\u00e4ringud, mida k\u00e4sitletakse kui \u00fchte p\u00e4ringut.<\/p>\n<h4>Tehingud peavad vastama ACID omadustele.<\/h4>\n<p>\nAatomaarus. Tehing t\u00e4idetakse kas t\u00e4ielikult v\u00f5i mitte \u00fcldse.<\/p>\n<p>Kohandatavus. Tehingu l\u00f5ppedes ei tohi andmetele kehtestatud piirangud (nt andmebaasi constraints) olla rikutud. Kohandatavus t\u00e4hendab, et s\u00fcsteem viiakse \u00fchest korrektset olekust teise korrektsetesse.<\/p>\n<p>Isolatsioon. Samal ajal toimivad tehingud ei tohi m\u00f5jutada \u00fcksteist, n\u00e4iteks muuta andmeid, mida kasutab teine tehing. Samal ajal toimetavate tehingute tulemus peab olema selline, nagu oleks tehingud toiminud j\u00e4rjestikku.<\/p>\n<p>Kestvus. P\u00e4rast kinnitamist ei tohi muudatused kaduda.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Tehingu ajalugu.<\/h2>\n<p><\/p>\n<h4>Ajaloos s\u00e4ilitatakse tehingute k\u00e4igus tehtud muudatused, mis tagavad andmete aatomaaruse ja kestvuse s\u00fcsteemi rikke korral.<\/h4>\n<p>\nAjalugu sisaldab v\u00e4\u00e4rtusi, mida andmed olid enne ja p\u00e4rast muudatust, mille tehing tegi. Write-ahead log strateegia n\u00f5uab, et ajaloosse lisataks kirje varasemate v\u00e4\u00e4rtuste kohta enne algust ja l\u00f5ppv\u00e4\u00e4rtuste kohta p\u00e4rast tehingu l\u00f5petamist. S\u00fcsteemi ootamatul seiskamisel loeb andmebaas ajalugu tagurpidi ja t\u00fchistab tehingute tehtud muudatused. Kohtumine poolelioleva tehinguga, teostab andmebaas selle ja salvestab muudatused ajaloosse. Seisundis, mis oli seiskamise hetkel, loeb andmebaas ajalugu otse ja taastab tehingute tehtud muudatused. Nii s\u00e4ilitatakse juba kinnitatud tehingute kestvus ja poolelioleva tehingu aatomaarus.<\/p>\n<p>Lihtne vigaste tehingute korduv t\u00e4itmine ei ole piisav taastumise tagamiseks. <\/p>\n<p><i>N\u00e4ide. Kasutaja kontol on 500$ ja ta otsustab need automaadist v\u00e4lja v\u00f5tta. Teostatakse kaks tehingut. Esimene loeb saldo v\u00e4\u00e4rtust ja kui kontol on piisavalt raha, antakse raha kasutajale v\u00e4lja. Teine lahutab vajalikku summat saldopausist. Oletame, et s\u00fcsteem t\u00f5rkus ja esimene operatsioon ei \u00f5nnestunud, kuid teine \u00f5nnestus. Sel juhul ei saa me p\u00e4rast s\u00fcsteemi normaalsesse olekusse viimist kasutajale raha uuesti v\u00e4lja anda, kui saldo pole positiivne.<\/i><\/p>\n<h2>Isolatsiooni tasemed<\/h2>\n<p><\/p>\n<h4>Fikseeritud andmete lugemine (Read Committed)<\/h4>\n<p>\nKuidaseisev lugemise probleem (Dirty Read) seisneb selles, et tehing v\u00f5ib lugeda teise tehingu vahepealseid tulemusi.<\/p>\n<p><i>N\u00e4ide. Algne saldo on 0$. T1 lisab saldole 50$. T2 loeb saldo v\u00e4\u00e4rtuse (50$). T1 t\u00fchistab muudatused ja l\u00f5petab. T2 j\u00e4tkab vale saldoandmetega, mis on loetud.<\/i><\/p>\n<p>Lahendus on fikseeritud andmete lugemine (Read Committed), mis keelab lugeda tehingu poolt muudetud andmeid. Kui tehing A muuda mingit andmevahet, siis tehing B peab ootama tehingu A l\u00f5petamist, et nende andmete juurde p\u00e4\u00e4seda.<\/p>\n<h4>Korratav lugemine (Repeatable Read)<\/h4>\n<p>\nV\u00e4lja kadunud muudatuste probleem (Lost Updates). T1 salvestab muudatuse T2 \u00fcle.<\/p>\n<p><i>N\u00e4ide. Algne saldo on 0$ ja kaks tehingut \u00fcheaegselt lisavad saldo. T1 ja T2 loevad saldo, mis on 0$. Siis T2 lisab 200$ 0$-le ja salvestab tulemuse. T1 lisab 100$ 0$-le ja salvestab tulemuse. L\u00f5pp Tulemus on 100$ asemel 300$.<\/i><\/p>\n<p>Korduvate lugemiste probleem (Unrepeatable read). Andmete korduv lugemine toob tagasi erinevad v\u00e4\u00e4rtused.<\/p>\n<p><i>N\u00e4ide. T1 loeb saldo v\u00e4\u00e4rtuse, mis on 0$. Siis T2 lisab saldole 50$ ja l\u00f5petab. T1 loeb andmed uuesti ja leiab, et see ei \u00fchti eelmise tulemusega.<\/i><\/p>\n<p>Korratav lugemine (Repeatable Read) tagab, et korduv lugemine annab sama tulemuse. Andmeid, mis on loetud \u00fche tehingu poolt, ei tohi teised muuta enne tehingu l\u00f5petamist. Kui tehing A loeb mingit andmevahet, peab tehing B ootama tehingu A l\u00f5petamist, et nende andmete juurde p\u00e4\u00e4seda.<\/p>\n<h4>J\u00e4rjekordne lugemine (Serializable)<\/h4>\n<p>\nFantomi lugemise probleem (Phantom Reads). Kaks p\u00e4ringut, mis valivad andmeid mingi tingimuse j\u00e4rgi, tagastavad erinevad v\u00e4\u00e4rtused.<\/p>\n<p><i>N\u00e4ide. T1 k\u00fcsib, kui palju on k\u00f5iki kasutajaid, kelle saldo on suurem kui 0$ aga v\u00e4iksem kui 100$. T2 v\u00e4hendab kasutaja saldot, kelle saldo on 101$, 1$ v\u00f5rra. T1 t\u00e4idab p\u00e4ringu uuesti.<\/i><\/p>\n<p>Korrastatud lugemine (Serializable). Tehingud viiakse l\u00e4bi nagu t\u00e4iesti j\u00e4rjestikused. Uuendamine ja uute kirje lisamine, mis kuuluvad p\u00e4ringu tingimuste alla, on keelatud. Kui tehing A k\u00fcsib kogu tabeli andmeid, siis tabel k\u00fclmutatakse t\u00e4ielikult teiste tehingute jaoks kuni tehing A l\u00f5petamiseni.<\/p>\n<h2>Kavandaja (Scheduler)<\/h2>\n<p><\/p>\n<h4>Seab j\u00e4rjestuse, milles tehingud peavad toimuma paralleelselt toimuvaid tehingute puhul.<\/h4>\n<p>\nTagab etteantud isolatsioonitaseme. Kui tehingute teostamise tulemus ei s\u00f5ltu nende j\u00e4rjestusest, on need tegevused kommutatiivsed (Permutable). Kommutatiivsed on lugemisoperatsioonid ja tegevused erinevate andmete \u00fcle. Lugemise-kirjutamise ja kirjutamise-kirjutamise operatsioonid ei ole kommutatiivsed. Kavandaja \u00fclesanne on vaheldada paralleelsete tehingute teostatud operatsioone nii, et teostamise tulemus oleks v\u00f5rreldav j\u00e4rjestikuse teostamisega.<\/p>\n<h2>Paralleelselt toimivate \u00fclesannete juhtimise mehhanismid (Concurrency Control)<\/h2>\n<p><\/p>\n<h4>Optimistlik p\u00f5hineb konfliktide tuvastamisel ja lahendamisel, pessimistlik aga konfliktide v\u00e4ltimisel.<\/h4>\n<p>\nOptimistliku l\u00e4henemise korral saavad mitmed kasutajad andmete koopiad. Esimene, kes l\u00f5petab redigeerimise, salvestab muudatused, teised peavad sulandama muudatused. Optimistlik algoritm v\u00f5imaldab konfliktide tekkimist, kuid s\u00fcsteem peab p\u00e4rast konflikti taastuma.<\/p>\n<p>Pessimistliku l\u00e4henemise korral takistab esimesena andmeid saanud kasutaja teistele andmete saamise. Kui konfliktid on harvad, on m\u00f5istlik valida optimistlik strateegia, kuna see tagab k\u00f5rgema paralleelsuse taseme.<\/p>\n<h2>Lukustamine (Locking)<\/h2>\n<p><\/p>\n<h4>Kui \u00fcks tehing on andmeid lukustanud, peavad k\u00f5ik teised tehingud andmetele juurdep\u00e4\u00e4su saamisel ootama lukustuse vabastamist.<\/h4>\n<p>\nBlokk v\u00f5ib kanda andmebaasil, tabelil, real v\u00f5i atribuudi peal. Jagatud lukustus (Shared Lock) v\u00f5ib kehtida samaaegselt mitmest tehingust samadele andmetele, v\u00f5imaldades k\u00f5igil tehingutel (sealhulgas lukustuse seadnud) lugeda, kuid keelates muutmise ja monopolise kogu. Monopol lukustus (Exclusive Lock) v\u00f5ib kehtida ainult \u00fchele tehingule, lubades sellel tehingul teha k\u00f5iki toiminguid, kuid keelates asjaomastele teistele.<\/p>\n<h4>S\u00fcnnikovaks nimetatakse olukorda, kus tehingud j\u00e4\u00e4vad l\u00f5putuks ootere\u017eiimiks.<\/h4>\n<p>\n<i>N\u00e4ide. Esimene tehing ootab, kuni teine vabastab kinni peetud andmed, samas kui teine ootab, kuni esimene vabastab oma kinni peetud andmed.<\/i><\/p>\n<h4>Optimistlik lahendus ummikseisu probleemile v\u00f5imaldab ummikseisu tekkimist, kuid seej\u00e4rel taastab s\u00fcsteemi, tagastades \u00fche ummikseisus osaleva tehingu.<\/h4>\n<p>\nTeatud ajavahemike j\u00e4rel otsitakse ummikseisu. \u00dcks tuvastamise meetod on aja p\u00f5hjal \u2014 see t\u00e4hendab, et arvatakse, et ummikseis on juhtunud, kui tehing kestab liiga kaua. Kui ummikseis on leitud, siis tagastatakse \u00fcks tehingud, mis v\u00f5imaldab teistel ummikseisus osalejatel l\u00f5petada. Ohvri valik v\u00f5ib p\u00f5hineda tehingute maksumusel v\u00f5i nende vanusel (Wait-Die ja Wound-wait skeemid). <\/p>\n<p>Iga tehing <b>T<\/b> saa ajam\u00e4rgi <b>TS<\/b> mis sisaldab tehingu k\u00e4ivitamise aega.<\/p>\n<p>Wait-Die. <\/p>\n<p><u>Kui <b>TS(Ti)<\/b> &lt; <b>TS(Tj)<\/b>, siis <b>Ti<\/b> ootab, muidu <b>Ti<\/b> tagastatakse ja algab uuesti sama ajam\u00e4rgiga.<\/u><\/p>\n<p>Kui noorem tehing on kinni hoidnud ressursi ja vanem taotleb sama ressurssi, siis on vanemale tehingule lubatud oodata. Kui vanem tehing on kinni hoidnud ressursi, siis tagastatakse noorem tehing, mis taotleb seda ressurssi.<\/p>\n<p>Wound-wait. <\/p>\n<p><u>Kui <b>TS(Ti)<\/b> &lt; <b>TS(Tj)<\/b>, siis <b>Tj<\/b> tagastatakse ja algab uuesti sama ajam\u00e4rgiga, muidu <b>Ti<\/b> ootab.<\/u><\/p>\n<p>Kui noorem tehing on ressurssi haaranud ja vanem tehing n\u00f5uab sama ressurssi, siis noorem tehing katkestatakse. Kui vanem tehing on ressurssi haaranud, on nooremale tehingule, mis seda ressurssi n\u00f5uab, lubatud oodata. Ohvri valik, mis p\u00f5hineb vanusel, takistab ummikseisude tekkimist, kuid katkestab tehingud, mis ei ole ummikseisus. Probleem seisneb selles, et tehingud v\u00f5ivad korduvalt katkestada, kuna vanem tehing v\u00f5ib ressursse pikalt hoida.<\/p>\n<h4>Pessimistik l\u00e4henemine ummikseisude probleemile ei luba tehingu t\u00e4itmist, kui on oht ummikseisu tekkimiseks.<\/h4>\n<p>\nUmmikseisu tuvastamiseks ehitatakse graaf (oote-graaf, wait-for-graph), mille tipud on tehingud ning servad on suunatud tehingutelt, mis ootavad andmete vabastamist, tehingutele, mis on need andmed haaranud. Uurimise korral peetakse ummikseisu toimunuks, kui graaf on ts\u00fckliline. Oote-graafi koostamine, eriti jaotatud andmebaasides, on kulukas protseduur.<\/p>\n<h4>Kahef\u00e4\u00e4riline lukustamine \u2014 ummikseisude v\u00e4ltimine, haarates k\u00f5ik tehingu jaoks vajalikud ressursid tehingu alguses ja vabastades need l\u00f5puks.<\/h4>\n<p>\nK\u00f5ik lukustavad toimingud peavad eelnema esimesele vabastavale toimingule. Sellel on kaks faasi \u2014 kasvufaas, mille k\u00e4igus toimub haaramine, ja kahanev faas, mille k\u00e4igus toimub vabastamine. Kui ressursi haaramine ei \u00f5nnestu, algab tehing uuesti. On v\u00f5imalik olukord, kus tehing ei suuda vajalikke ressursse haarata, n\u00e4iteks kui mitu tehingut konkureerivad samade ressursside \u00fcle.<\/p>\n<h4>Kahef\u00e4\u00e4riline kinnitamine tagab kinnitamise k\u00f5igis andmebaasi koopiates.<\/h4>\n<p>\nIga andmebaas kannab oma logisse andmed, mida muudetakse, ja vastab koordinaatorile OK (H\u00e4\u00e4letusfaas). P\u00e4rast seda, kui k\u00f5ik on vastanud OK, saadab koordinaator signaali, mis kohustab k\u00f5iki kinnitama. P\u00e4rast kinnitamist <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/server\/dts-los-angeles\/\"   title=\"serverilt\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3482\">serverilt<\/a> vastatakse OK, kui v\u00e4hemalt \u00fcks ei vastanud OK, saadab koordinaator signaali muudatuste t\u00fchistamiseks k\u00f5igile serveritele (L\u00f5petamise faas).<\/p>\n<h2>Ajatempli meetod<\/h2>\n<p><\/p>\n<h4>Vanem tehing katkestatakse, kui ta p\u00fc\u00fcab p\u00e4\u00e4seda juurde andmetele, mis on seotud noorema tehinguga.<\/h4>\n<p>\nIga tehingu puhul m\u00e4\u00e4ratakse ajatemperatuur <b>TS<\/b> vastavalt teostamise algusajale. Kui <b>Ti<\/b> vanem <b>Tj<\/b>, siis <b>TS(Ti)<\/b> &lt; <b>TS(Tj)<\/b>.<\/p>\n<p>Kui tehing t\u00fchistatakse, m\u00e4\u00e4ratakse sellele uus ajatemperatuur. Iga andmeobjekt <b>Q<\/b> mille tehing kaasas, m\u00e4rgitaan kahe ajatemperatuuriga. <b>W-TS(Q)<\/b> \u2014 k\u00f5ige noorema tehingu ajatemperatuur, mis on edukalt teinud kirje <b>Q<\/b>. <b>R-TS(Q)<\/b> \u2014 k\u00f5ige noorema tehingu ajatemperatuur, mis on teinud lugemiskirje <b>Q<\/b>.<\/p>\n<p>Kui tehing <b>T<\/b> taotleb andmete lugemist <b>Q<\/b> on kaks v\u00f5imalust.<\/p>\n<p><u>Kui <b>TS(T)<\/b> &lt; <b>W-TS(Q)<\/b>, see t\u00e4hendab, et andmeid on v\u00e4rskendanud noorem tehing, siis tehing <b>T<\/b> t\u00fchistatakse.<\/u><\/p>\n<p><u>Kui <b>TS(T)<\/b> &gt;= <b>W-TS(Q)<\/b>, siis lugemine toimub ja <b>R-TS(Q)<\/b> muuta <b>MAX(R-TS(Q), TS(T))<\/b>.<\/u><\/p>\n<p>Kui tehing <b>T<\/b> taotleb andmete muutmist <b>Q<\/b> on kaks v\u00f5imalust. <\/p>\n<p><u>Kui <b>TS(T)<\/b> &lt; <b>R-TS(Q)<\/b>, see t\u00e4hendab, et andmeid on juba lugenud noorem tehing ja kui muudatus teostatakse, siis tekib konflikt. Tehing <b>T<\/b> t\u00fchistatakse. <\/u><\/p>\n<p><u>Kui <b>TS(T)<\/b> &lt; <b>W-TS(Q)<\/b>, see t\u00e4hendab, et tehing proovib kirjutada uuemat v\u00e4\u00e4rtust, tehing T t\u00fchistatakse. Muudel juhtudel toimub muudatus ja <b>W-TS(Q)<\/b> muutub v\u00f5rdses <b>TS(T)<\/b>.<\/u><\/p>\n<p>Kulukas oote graafiku koostamine pole vajalik. Vanemad tehingud s\u00f5ltuvad noorematest, seega ei esine ootegraafikus ts\u00fckleid. Ei ole ummistusi, kuna tehingud ei oota, vaid t\u00fchistatakse kohe. Kaskadit\u00fchistamised on v\u00f5imalikud. Kui <b>Ti<\/b> t\u00fchistati ja <b>Tj<\/b> luges andmeid, mille ta muutis <b>Ti<\/b>, siis <b>Tj<\/b> peab samuti t\u00fchistama. Kui sel hetkel <b>Tj<\/b> oli juba kinnitatud, siis tekib vastuolu j\u00e4rjepidevuse printsiibiga.<\/p>\n<p>\u00dcks lahendus kaskadit\u00fchistamistele. Tehing viib k\u00f5ik kirjutamistegevused l\u00f5pule, samal ajal kui teised tehingud peavad ootama selle tegevuse t\u00e4itmist. Tehingud ootavad kinnitamist enne lugemist.<\/p>\n<h4>Thomas'i kirjutamise reegel \u2014 variatsioon ajatemperatuuri meetodist, mille kohaselt on andmete, mida on v\u00e4rskendanud noorem tehing, kirjutamine vanema tehingu poolt keelatud.<\/h4>\n<p>\nTehing <b>T<\/b> taotleb andmete muutmist <b>Q<\/b>. Kui <b>TS(T)<\/b> &lt; <b>W-TS(Q)<\/b>, see t\u00e4hendab, et tehing proovib kirjutada uuemat v\u00e4\u00e4rtust, tehing T ei t\u00fchistata nagu ajatemperatuuri meetodis.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446662\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438. \u041e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435\u043c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043b\u0438\u0431\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 (\u0444\u0438\u043a\u0441\u0430\u0446\u0438\u044f, commit) \u043b\u0438\u0431\u043e \u043e\u0442\u043c\u0435\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 (\u043e\u0442\u043a\u0430\u0442, rollback). \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a \u0411\u0414 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u044d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0440\u0430\u043a\u0442\u0443\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0435\u0434\u0438\u043d\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441. \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0443\u0434\u043e\u0432\u043b\u0435\u0442\u0432\u043e\u0440\u044f\u0442\u044c \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c ACID \u0410\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c. \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u043b\u0438\u0431\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30878","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tranzaktsii-i-mehanizmy-ih-kontrolya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0438\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tranzaktsii-i-mehanizmy-ih-kontrolya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:37:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:56+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Tehingud ja nende kontrollimehhanismid | ProHoster","description":"Tehingud Tehing on andmete \u00fcle toimingute j\u00e4rjestus, millel on algus ja l\u00f5pp. Tehing on j\u00e4rjestikune lugemise ja kirjutamise toimingute teostamine.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tranzaktsii-i-mehanizmy-ih-kontrolya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0438\u0445 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f | ProHoster","og:description":"\u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0438 \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0435\u0439 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043d\u0430\u0434 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u044e\u0449\u0430\u044f \u043d\u0430\u0447\u0430\u043b\u043e \u0438 \u043a\u043e\u043d\u0435\u0446 \u0422\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0447\u0442\u0435\u043d\u0438\u044f \u0438 \u0437\u0430\u043f\u0438\u0441\u0438.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/tranzaktsii-i-mehanizmy-ih-kontrolya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:37:56+00:00","article:modified_time":"2019-10-31T18:37:56+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30878","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-22 15:31:13","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:27:38","updated":"2026-02-22 15:31:13","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=30878"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30878\/revisions"}],"predecessor-version":[{"id":162008,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30878\/revisions\/162008"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=30878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=30878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=30878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}