{"id":83337,"date":"2020-05-30T07:42:48","date_gmt":"2020-05-30T05:42:48","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh"},"modified":"2020-05-30T07:42:48","modified_gmt":"2020-05-30T05:42:48","slug":"k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh","title":{"rendered":"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Tere k\u00f5igile. Siin on Vladislav Rodin. Praegu olen ma kursuse \"Kuna k\u00f5rge koormuse arhitekt\" juht OTUSes ning \u00f5petan ka tarkvaraarhitektuuri kursustel.<br \/>\n<\/i><br \/>\n<b><i>Lisaks \u00f5petamisele, nagu olete ilmselt m\u00e4rganud, kirjutan ma autorimaterjali OTUSi blogisse Habr ja t\u00e4na soovin p\u00fchendada artikli kursuse k\u00e4ivitamisele. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">\u00abPostgreSQL\u00bb<\/a><\/noindex>, millele on hetkel avatud registreerimine.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/acfb562f4e72d657c09f5ce00acdf80b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Sissejuhatus<\/h2>\n<p>\nV <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/494652\/\">eelmine kord<\/a><\/noindex> R\u00e4\u00e4kisime sellest, et andmebaaside tehingud lahendavad kahte \u00fclesannet: tagades veakindluse ja juurdep\u00e4\u00e4su andmetele konkurentsikeskkonnas. Nende \u00fclesannete t\u00e4itmiseks peab tehing omama ACID omadusi. T\u00e4na r\u00e4\u00e4gime p\u00f5hjalikult t\u00e4hede <b>I (isolation)<\/b> sellel akron\u00fc\u00fcmil.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Isolatsioon<\/h2>\n<p>\nIsolatsioon lahendab juurdep\u00e4\u00e4su andmetele konkurentsiv\u00f5imelises keskkonnas, pakkudes p\u00f5him\u00f5tteliselt kaitset race condition'ide eest. Ideaalis t\u00e4hendab isolatsioon serialiseerimist, mis on omadus, mis tagab, et tehingute samaaegne t\u00e4itmine annab sama tulemuse kui nende j\u00e4rkj\u00e4rguline t\u00e4itmine. Peamine probleem selle omaduse juures on see, et seda on v\u00e4ga raske tehniliselt tagada, mis omakorda m\u00f5jutab s\u00fcsteemi j\u00f5udlust. Just seet\u00f5ttu n\u00f5rgestatakse isolatsiooni sageli, v\u00f5ttes ette teatud anomaaliate tekkimise riske, millest r\u00e4\u00e4gitakse allpool. Teatud anomaaliate v\u00f5imalus iseloomustabki tehingute isolatsiooni taset.<\/p>\n<p>Tuntuimad anomaaliad on: dirty read, non-repeatable read, phantom read, kuid tegelikult on veel 5: dirty write, cursor lost update, lost update, read skew, write skew.<\/p>\n<h2>Dirty write<\/h2>\n<p>\nAnomaalia olemus seisneb selles, et tehingud v\u00f5ivad kirjutada \u00fcle kinnitamata andmed.<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/416d14593449b8b10d46c77804af772a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nSee anomaalia on ohtlik mitte ainult selle poolest, et andmed v\u00f5ivad p\u00e4rast m\u00f5lema tehingu kinnitamist konfliktida (nagu pildil), vaid ka seet\u00f5ttu, et rikutakse aatomilisust: kuna me lubame kirjutamata andmeid \u00fcle kirjutada, ei ole selge, kuidas \u00fche tehingu tagasiviimine toimub, kahjustamata samal ajal teist. <\/p>\n<p>Anomaalia ravi on piisavalt lihtne: paigaldame kirjutamisblokaadi enne kirjutamise algust, keelates teistel tehingutel kirje muutmise seni, kuni blokk on eemaldatud. <\/p>\n<h2>Dirty read<\/h2>\n<p>\nDirty read t\u00e4hendab kinnitamata andmete lugemist. <\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/133a48a7a1b91a085e3ade73de517e3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProbleemid tekivad, kui valiku alusel tuleb teha mingisuguseid toiminguid v\u00f5i otsuseid.<\/p>\n<p>Anomaalia parandamiseks v\u00f5ib lugemise ajal panna lukustuse, kuid see m\u00f5jutab oluliselt j\u00f5udlust. Oluliselt lihtsam on \u00f6elda, et tehingu tagasiv\u00f5tmiseks peab algne andmeolek (enne kirjutamist) olema s\u00fcsteemis kindlasti salvestatud. Miks mitte lugeda sealt? See on piisavalt odav, seega enamik andmebaase eemaldab dirty read vaikimisi. <\/p>\n<h2>Lost update<\/h2>\n<p>\nLost update t\u00e4hendab kadunud uuendusi, ja t\u00f5lge kuvab probleemi olemuse \u00fcsna t\u00e4pselt:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/bed92d27aa9ad2330de4a5fa37991bf6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTegelikult oli T2 tehingu tulemus t\u00fchistatud. Sellist olukorda saab lahendada selgete v\u00f5i varjatud kirje lukustustega. See t\u00e4hendab, et me kas lihtsalt uuendame kirjet, mille puhul tekib varjatud lukustus, v\u00f5i me teeme <b>select for update<\/b>, p\u00f5hjustades lugemis- ja kirjutamislukustuse tekkimist. Pange t\u00e4hele, et selline toiming on piisavalt ohtlik: oma \"nende s\u00fc\u00fctute\" lugemistega lukustame muid lugemisi. M\u00f5ned andmebaasid pakuvad turvalisemat <b>select for share<\/b>, mis v\u00f5imaldab andmeid lugeda, kuid ei luba neid muuta. <\/p>\n<h2>Cursor lost update<\/h2>\n<p>\nKitsama kontrolli jaoks v\u00f5ivad andmebaasid pakkuda ka muid t\u00f6\u00f6riistu, n\u00e4iteks kursoreid. Kursor on struktuur, mis sisaldab ridade kogumit ja v\u00f5imaldab nende kaudu iteratiivset t\u00f6\u00f6tlemist. <b>declare cursor_name for select_statement<\/b>. Kursoris oleva sisu kirjeldab select. <\/p>\n<p>Miks on vajalik kursor? Asi on selles, et m\u00f5ned andmebaasid pakuvad lukustust k\u00f5igi valitud ridade puhul (read stability) v\u00f5i ainult selle rea puhul, millel kursor parajasti asub (cursor stability). Cursor stability korral teostatakse l\u00fchike lukustus, mis aitab v\u00e4hendada lukustuste arvu suurte andmevalimite korral iteratsiooni ajal. Seet\u00f5ttu tuuakse kaotatud uuenduse anomaalia esile eraldi kursorite puhul.<\/p>\n<h2>Mitte korduv lugemine<\/h2>\n<p>\nMitte korduv lugemine seisneb selles, et meie tehingu k\u00e4igus toob kaks j\u00e4rjestikust sama salvestuse lugemist kaasa erinevate tulemuste saamise, kuna teine tehing sekkus nende kahe lugemise vahele, muutis meie andmeid ja tehti kinnitatuks. <\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/7954d2fbcbda3904240eae39ba5e9bbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMiks see probleem on? Kujutage ette, et tehingu T2 eesm\u00e4rk on pildil valida k\u00f5ik tooted, mille hind on madalam kui 150 \u00fchikut. Keegi teine uuendas hinna 200 \u00fchikuni. Seega ei toimi seatud filter.<\/p>\n<p>Need anomaaliad lakkuvad esinemast kahefaasiliste lukustuste lisamise v\u00f5i MVCC mehhanismi kasutamise korral, millest sooviksin eraldi r\u00e4\u00e4kida. <\/p>\n<h2>Vaimne lugemine<\/h2>\n<p>\nFantoomlugemine viitab andmete lugemisele, mis on lisatud teise tehingu poolt. <\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/4f5e62205bac4b9422f6631f171ca11d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e4iteks v\u00f5ib sel juhul t\u00e4heldada odavaima toote vale valikut. <\/p>\n<p>Fantoomlugemist on k\u00fcllaltki keeruline k\u00f5rvaldada. Tavaline lukustus ei ole piisav, kuna me ei saa lukustada seda, mida veel ei ole. 2PL-s\u00fcsteemid kasutavad predikatiivset lukustamist, samas kui MVCC-s\u00fcsteemid t\u00fchistavad tehingud, mis v\u00f5ivad olla rikutud sisestamise t\u00f5ttu. M\u00f5lemad mehhanismid on piisavalt rasked.<\/p>\n<h2>Read skew<\/h2>\n<p>\nRead skew tekib, kui t\u00f6\u00f6tame mitme tabeliga, mille sisu peaks muutuma koosk\u00f5lastatult. <\/p>\n<p>Oletame, et meil on tabelid, mis esindavad postitusi ja nende metaandmeid:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/e15440e44c41c0ac15d2c3349d1fae4e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00dcks tehing loeb tabelitest, teine muudab neid:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/b89da5ae2d926ed0061cb90917d8a1ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTehingu T1 teostamisel on postil title = Good ja updated_by = T2, mis on teatud vastuolu. <\/p>\n<p>Tegelikult on see non-repeatable read, kuid mitme tabeli osana.<\/p>\n<p>T1 v\u00f5ib lukustada k\u00f5ik read, mida ta loeb, mis takistab T2-l teavet muuta. MVCC puhul t\u00fchistatakse T2 tehing. Selle anomaalia kaitse v\u00f5ib osutuda oluliseks, kui kasutame kursorit. <\/p>\n<h2>Write skew<\/h2>\n<p>\nSeda anomaaliat on samuti lihtsam selgitada n\u00e4ite kaudu: oletame, et meie s\u00fcsteemis peab \u00fcks arst olema vahetuses, kuid m\u00f5lemad arstid otsustasid oma vahetuse t\u00fchistada:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/7c6e4410224c3fcc9c564369535644e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/8723c2dfe3e4b97ded601da2f89a77b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnomaalia viib selleni, et \u00fckski arst ei tule vahetusse. Kuidas see juhtus? Sest tehing kontrollis tingimust, mida v\u00f5is rikkuda teine tehing, ja isolatsiooni t\u00f5ttu ei saanud me seda muudatust n\u00e4ha.<\/p>\n<p>See on sama, mis non-repeatable read. N\u00e4iteks v\u00f5ivad select'id lukustada neid ridasid.<\/p>\n<p>Write skew ja read skew on eelnevate anomaaliate kombinatsioonid. Vaatleme write skew'd, mis on sisuliselt phantom read. Vaatleme tabelit, kus on t\u00f6\u00f6tajate nimed, nende palgad ja projekt, millega nad t\u00f6\u00f6tavad:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/2953d6148d07ded9e1a3d67428b14e67.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute isoleerimise taseme n\u00f5rgenemine andmebaasides?\" src=\"\/wp-content\/uploads\/2020\/05\/f77800e316708944aa32a9095ae6b132.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKokkuv\u00f5ttes saame sellise pildi: iga juht arvas, et tema muudatus ei viiks eelarvest \u00fcle, seega tegid nad personali muudatusi, mis kokkuv\u00f5ttes viisid \u00fcletamisse. <\/p>\n<p>Probleemi tekkimise p\u00f5hjus on t\u00e4pselt sama nagu vaimse lugemise korral. <\/p>\n<h2>J\u00e4reldused<\/h2>\n<p>\nTehingute isolatsioonitaseme n\u00f5rgendamine andmebaasis on kompromiss turvalisuse ja j\u00f5udluse vahel; sellele tasemele tuleks l\u00e4heneda, l\u00e4htudes \u00e4ri v\u00f5imalike riskide hindamisest, mis v\u00f5ivad tekkida erinevate anomaaliate korral.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">Uuri kursuse kohta l\u00e4hemalt.<br \/>\n<\/a><\/noindex><\/p>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/501294\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u0420\u043e\u0434\u0438\u043d. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u0443\u0440\u0441\u0430 \u00ab\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a\u00bb \u0432 OTUS, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e \u043d\u0430 \u043a\u0443\u0440\u0441\u0430\u0445, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0434\u043b\u044f \u0431\u043b\u043e\u0433\u0430 OTUS \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0445\u043e\u0447\u0443 \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":83338,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-83337","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u0420\u043e\u0434\u0438\u043d. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u0443\u0440\u0441\u0430 \u00ab\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a\u00bb \u0432 OTUS, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e \u043d\u0430 \u043a\u0443\u0440\u0441\u0430\u0445, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0434\u043b\u044f \u0431\u043b\u043e\u0433\u0430 OTUS \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0445\u043e\u0447\u0443 \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441\" \/>\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\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\u041a \u0447\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u0420\u043e\u0434\u0438\u043d. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u0443\u0440\u0441\u0430 \u00ab\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a\u00bb \u0432 OTUS, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e \u043d\u0430 \u043a\u0443\u0440\u0441\u0430\u0445, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0434\u043b\u044f \u0431\u043b\u043e\u0433\u0430 OTUS \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0445\u043e\u0447\u0443 \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh\" \/>\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=\"2020-05-30T05:42:48+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-30T05:42:48+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\udd47Millele v\u00f5ib viia tehingute isolatsioonitaseme n\u00f5rgendamine andmebaasides | ProHoster","description":"Tere k\u00f5igile. Siin on Vladislav Rodin. Hetkel olen ma \"Suure koormuse arhitekti\" kursuse juht OTUSes, samuti \u00f5petan tarkvaraarhitektuuri kursustel. Lisaks \u00f5petamisele, nagu olete v\u00f5ib-olla m\u00e4rganud, kirjutan ma autori materjali OTUSi blogisse Habrisse ning tahan p\u00fchendada t\u00e4nase artikli PostgreSQL kursuse k\u00e4ivitamisele, mis toimub just n\u00fc\u00fcd.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh","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\u041a \u0447\u0435\u043c\u0443 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0438\u0435 \u0443\u0440\u043e\u0432\u043d\u044f \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0432 \u0431\u0430\u0437\u0430\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041d\u0430 \u0441\u0432\u044f\u0437\u0438 \u0412\u043b\u0430\u0434\u0438\u0441\u043b\u0430\u0432 \u0420\u043e\u0434\u0438\u043d. \u0412 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u0432\u0440\u0435\u043c\u044f \u044f \u044f\u0432\u043b\u044f\u044e\u0441\u044c \u0440\u0443\u043a\u043e\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u043a\u0443\u0440\u0441\u0430 \u00ab\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440 \u0432\u044b\u0441\u043e\u043a\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a\u00bb \u0432 OTUS, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u044e \u043d\u0430 \u043a\u0443\u0440\u0441\u0430\u0445, \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u044b\u0445 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u041f\u041e. \u041f\u043e\u043c\u0438\u043c\u043e \u043f\u0440\u0435\u043f\u043e\u0434\u0430\u0432\u0430\u043d\u0438\u044f, \u043a\u0430\u043a \u0432\u044b \u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u044f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u0434\u043b\u044f \u0431\u043b\u043e\u0433\u0430 OTUS \u043d\u0430 \u0445\u0430\u0431\u0440\u0435 \u0438 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u044e\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u0445\u043e\u0447\u0443 \u043f\u0440\u0438\u0443\u0440\u043e\u0447\u0438\u0442\u044c \u043a \u0437\u0430\u043f\u0443\u0441\u043a\u0443 \u043a\u0443\u0440\u0441\u0430 \u00abPostgreSQL\u00bb, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh","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":"2020-05-30T05:42:48+00:00","article:modified_time":"2020-05-30T05:42:48+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"83337","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 15:20:28","updated":"2022-09-28 14:57:58"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/83337","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=83337"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/83337\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/83338"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=83337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=83337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=83337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}