{"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 eraldusv\u00f5ime n\u00f5rgendamine andmebaasides","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Tere k\u00f5igile. Siin on Vladislav Rodin. Praegu olen ma kursuse \"Suure koormuse arhitekt\" juht OTUSes, samuti \u00f5petan tarkvaraarhitektuuri kursustel.<br \/>\n<\/i><br \/>\n<b><i>Lisaks \u00f5petamisele, nagu olete v\u00f5ib-olla m\u00e4rganud, kirjutan ma OTUSi blogisse autorimaterjali ja t\u00e4na tahan ma artikli p\u00fchendada kursuse k\u00e4ivitamisele <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">\u00abPostgreSQL\u00bb<\/a><\/noindex>, millele on praegu avatud registreerimine.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/acfb562f4e72d657c09f5ce00acdf80b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Sissejuhatus<\/h2>\n<p>\nUues <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/494652\/\">eelmine kord<\/a><\/noindex> Me oleme r\u00e4\u00e4kinud sellest, et andmebaasides toimuvad tehingud lahendavad kahte \u00fclesannet: tagavad talitlush\u00e4irete talumise ja andmete ligip\u00e4\u00e4su konkurentsikeskkonnas. Et neid \u00fclesandeid t\u00e4ita, peab tehing omama ACID omadusi. T\u00e4na r\u00e4\u00e4gime me p\u00f5hjalikult t\u00e4hest <b>I (isolatsioon)<\/b> selles akron\u00fc\u00fcmis.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Isolatsioon<\/h2>\n<p>\nIsolatsioon lahendab andmete juurdep\u00e4\u00e4su probleemi konkurentsikeskkonnas, pakkudes tegelikult kaitset race condition'ite eest. Ideaalis t\u00e4hendab isolatsioon serialiseerimist, st omadust, mis tagab, et samaaegselt t\u00e4idetud tehingute l\u00f5pptulemus on sama nagu juhul, kui need t\u00e4idetaks j\u00e4rjestikku. Selle omaduse peamine probleem on see, et seda on tehniliselt v\u00e4ga raske tagada, mis omakorda m\u00f5jutab s\u00fcsteemi j\u00f5udlust. Just seet\u00f5ttu n\u00f5rgestatakse isolatsiooni sageli, v\u00f5ttes riske teatud anomaaliate tekkimise osas, millest r\u00e4\u00e4gitakse allpool. Teatud anomaaliate tekkimise v\u00f5imalus iseloomustabki tehingute isolatsiooni taset.<\/p>\n<p>K\u00f5igist tuntumatest anomaaliatest on: dirty read, non-repeatable read, phantom read, kuid tegelikult on neid 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 kinnitamata andmeid \u00fcle.<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute eraldusv\u00f5ime n\u00f5rgendamine 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 konflikti sattuda (nagu pildil), vaid ka seet\u00f5ttu, et rikutakse aatomilisust: kuna me lubame kinnitamata andmete \u00fcmberkirjutamise, siis ei ole selge, kuidas tagada \u00fche tehingu tagasiv\u00f5tmine, rikkumata samal ajal teist. <\/p>\n<p>Anomaalia lahendamine on \u00fcsna lihtne: paneme kirjutamisele lukustuse enne kirjutamise alustamist, keelates teistel tehingutel \u00fclesande muutmise, kuni lukustust ei eemaldata. <\/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 eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/133a48a7a1b91a085e3ade73de517e3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProbleemid tekivad siis, kui valimi p\u00f5hjal tuleb teha toiminguid v\u00f5i otsuseid.<\/p>\n<p>Anomaalia parandamiseks v\u00f5ib rakendada lugemisblokeeringut, kuid see m\u00f5jutab j\u00f5udlust oluliselt. Kaugelt lihtsam on \u00f6elda, et tehingu rollback'i puhul peab algne andmete olek (enne kirje tegemist) olema s\u00fcsteemis kindlasti salvestatud. Miks mitte sealt lugeda? See on piisavalt odav, seet\u00f5ttu enamik andmebaase eemaldab dirty read'i vaikimisi. <\/p>\n<h2>Kadunud v\u00e4rskendus<\/h2>\n<p>\nKadunud v\u00e4rskendus t\u00e4histab kadunud v\u00e4rskendusi ja see t\u00f5lge peegeldab probleemi olemust \u00fcsna t\u00e4pselt:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/bed92d27aa9ad2330de4a5fa37991bf6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTegelikult t\u00fchistati tehingu T2 tulemus. Selline olukord lahendatakse selgete v\u00f5i mitte-selgete kirjalukudega. See t\u00e4hendab, et kas me lihtsalt uuendame kirjet, ja siis tekib mitte-selge lukutus, v\u00f5i sooritame <b>select for update<\/b>, p\u00f5hjustades lugemise ja kirjutamise lukustamise loomist. Pange t\u00e4hele, et selline operatsioon on piisavalt ohtlik: oma \"kahjutuga\" lugemisega lukustame me teised lugemised. M\u00f5ned andmebaasid pakuvad turvalisemat <b>select for share<\/b>, mis v\u00f5imaldab andmeid lugeda, kuid ei luba neid muuta. <\/p>\n<h2>Kursori kadunud v\u00e4rskendus<\/h2>\n<p>\nT\u00e4psema kontrolli jaoks v\u00f5ivad andmebaasid pakkuda muid t\u00f6\u00f6riistu, n\u00e4iteks kursoreid. Kursor on struktuur, mis sisaldab ridade kogumit ja v\u00f5imaldab neist iteratsiooni. <b>declare cursor_name for select_statement<\/b>. Kursorite sisu kirjeldatakse select'iga. <\/p>\n<p>Miks on vajalik kursor? Asi on selles, et m\u00f5ned andmebaasid pakuvad blokeeringut k\u00f5igile kirjadele, mis valitakse select'iga (read stability), v\u00f5i ainult sellele kirjele, millel kursor parasjagu asub (cursor stability). Cursor stability korral rakendatakse l\u00fchiajalist lukku, mis v\u00f5imaldab v\u00e4hendada blokeeringute arvu, kui iterime suure andmemahtude \u00fcle. Seet\u00f5ttu eristatakse anomaaliat lost update kursorite puhul eraldi.<\/p>\n<h2>Mitte-korduvalt loetud<\/h2>\n<p>\nMitte-korduv lugemine seisneb selles, et meie tehingu k\u00e4ivitamise ajal toob kahe j\u00e4rjestikuse sama kirje lugemine kaasa erinevaid tulemusi, kuna teine tehing sekkus nende kahe lugemise vahel, muutis meie andmeid ja tehti kinnitatud. <\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/7954d2fbcbda3904240eae39ba5e9bbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMiks see \u00fcldse probleem on? Kujutage ette, et transaktsiooni T2 eesm\u00e4rk on valida k\u00f5ik tooted, mille hind on madalam kui 150 eurot. Keegi teine muutis hinna 200 euro peale. Nii et kehtestatud filter ei t\u00f6\u00f6ta.<\/p>\n<p>Need anomaaliad lakkavad esinemast, kui lisatakse kahefasaalsed lukud v\u00f5i kasutatakse MVCC mehhanismi, millest sooviksin eraldi r\u00e4\u00e4kida. <\/p>\n<h2>Fantoomlugemine<\/h2>\n<p>\nFantoomlugemine on andmete lugemine, mis on lisatud teise transaktsiooni poolt. <\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/4f5e62205bac4b9422f6631f171ca11d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nN\u00e4iteks v\u00f5ib t\u00e4heldada vale k\u00f5ige odavama toote valikut, kui see aken esineb. <\/p>\n<p>Fantoomlugemistest vabanemine on juba piisavalt keeruline. Tavaline lukustus ei ole piisav, kuna ei saa lukustada seda, mida veel ei ole. 2PL-s\u00fcsteemid kasutavad predikatiivset lukustamist, samas kui MVCC-s\u00fcsteemides t\u00fchistab tehingute planeerija need transaktsioonid, mida v\u00f5ib rikkuda lisamine. M\u00f5lemad mehhanismid on piisavalt suured.<\/p>\n<h2>Lugemissegu<\/h2>\n<p>\nLugemissegu tekib, kui t\u00f6\u00f6tame mitme tabeliga, mille sisu peab muutuma j\u00e4rjepidevalt. <\/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 eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/e15440e44c41c0ac15d2c3349d1fae4e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u00dcks transaktsioon loeb tabelitest, teine muudab neid:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/b89da5ae2d926ed0061cb90917d8a1ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTransaktsiooni T1 t\u00e4itmise tulemuseks on, et postituse pealkiri on Good ja updated_by = T2, mis on mingisugune vastuolu. <\/p>\n<p>Tegelikult on see non-repeatable read, kuid mitme tabeli osas.<\/p>\n<p>Korrekteerimiseks v\u00f5ib T1 panna lukud k\u00f5ikidele ridadele, mida ta kavatseb lugeda, mis ei lase transaktsioonil T2 teavet muuta. MVCC puhul t\u00fchistatakse transaktsioon T2. Selle anomaalia kaitsmine v\u00f5ib muutuda oluliseks, kui kasutame kursorit. <\/p>\n<h2>Kirjutamissegu<\/h2>\n<p>\nSeda anomaaliat on lihtsam seletada n\u00e4ite kaudu: oletame, et meie s\u00fcsteemis peab v\u00e4hemalt \u00fcks arst olema valves, kuid m\u00f5lemad arstid otsustasid oma valve \u00e4ra j\u00e4tta:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute eraldusv\u00f5ime n\u00f5rgendamine 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 eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/8723c2dfe3e4b97ded601da2f89a77b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnomaalia viis selleni, et mitte \u00fckski arst ei tule valvele. Miks see juhtus? Kuna transaktsioon kontrollis tingimust, mida v\u00f5is rikuda teine transaktsioon, ja eraldatuse t\u00f5ttu me seda muudatust ei n\u00e4inud.<\/p>\n<p>See on sama, mis non-repeatable read. Valikuliselt v\u00f5ivad select'id kehtestada blokeeringud nendele kirjadele.<\/p>\n<p>Write skew ja read skew on eelnevate anomaaliate kombinatsioonid. Vaatame write skew'd, mis on sisuliselt phantom read. Vaadakem tabelit, kus on t\u00f6\u00f6tajate nimed, nende palk ja projekt, millega nad t\u00f6\u00f6tavad:<\/p>\n<p><img decoding=\"async\" alt=\"Millele v\u00f5ib viia tehingute eraldusv\u00f5ime n\u00f5rgendamine 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 eraldusv\u00f5ime n\u00f5rgendamine andmebaasides\" src=\"\/wp-content\/uploads\/2020\/05\/f77800e316708944aa32a9095ae6b132.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL\u00f5ppkokkuv\u00f5ttes saame j\u00e4rgmise pildi: iga juht arvas, et tema muudatus ei vii eelarvest k\u00f5rvale, seega tegid nad kadude muudatused, mis kokku viisid \u00fclelaekumisele. <\/p>\n<p>Probleemi teke on t\u00e4pselt sama, mis phantom read'i puhul. <\/p>\n<h2>J\u00e4reldused<\/h2>\n<p>\nAndmebaasi tehingute isoleerimise taseme n\u00f5rgenemine on kompromiss ohutuse ja j\u00f5udluse vahel; selle taseme valimisel tuleb arvestada ettev\u00f5tte potentsiaalsete riskidega, mis tekivad teatud anomaaliate korral.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">Tutvu kursusega 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 5.0.1.1 - 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.\" \/>\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) 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\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.\" \/>\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\udd47Mida v\u00f5ib tuua andmebaaside tehingute isoleerimise taseme n\u00f5rgenemine | ProHoster","description":"Tere k\u00f5igile. Siin on Vladislav Rodin.","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.","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","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\/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}]}}