{"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\/hu\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh","title":{"rendered":"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>\u00dcdv\u00f6zl\u00f6m \u00d6n\u00f6ket. Vladislav Rodin vagyok. Jelenleg az OTUS \u201eMagas terhel\u00e9s\u0171 architekt\u00fara\u201d kurzus\u00e1nak vezet\u0151je vagyok, \u00e9s szoftverarchitekt\u00far\u00e1val foglalkoz\u00f3 kurzusokon tan\u00edtok.<br \/>\n<\/i><br \/>\n<b><i>A tan\u00edt\u00e1s mellett, ahogy azt m\u00e1r \u00e9szlelhett\u00e9k, szerz\u0151i anyagokat \u00edrok az OTUS blogj\u00e1hoz a Habr-on, \u00e9s a mai cikket a kurzusunk ind\u00edt\u00e1s\u00e1hoz szeretn\u00e9m kapcsolni. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">\u201ePostgreSQL\u201d<\/a><\/noindex>, amelyre jelenleg felv\u00e9telt hirdet\u00fcnk.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/acfb562f4e72d657c09f5ce00acdf80b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Bevezet\u00e9s<\/h2>\n<p>\nA <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/494652\/\">Legut\u00f3bb<\/a><\/noindex> amelyr\u0151l besz\u00e9lt\u00fcnk, a tranzakci\u00f3k szerepe az adatb\u00e1zisokban a hib\u00e1s m\u0171k\u00f6d\u00e9sek elker\u00fcl\u00e9s\u00e9re \u00e9s az adatok p\u00e1rhuzamos hozz\u00e1f\u00e9r\u00e9s\u00e9nek biztos\u00edt\u00e1s\u00e1ra ir\u00e1nyult. Ahhoz, hogy ezeket a feladatokat teljes m\u00e9rt\u00e9kben elv\u00e9gezz\u00fck, a tranzakci\u00f3nak ACID tulajdons\u00e1gokkal kell b\u00edrnia. Ma r\u00e9szletesebben besz\u00e9l\u00fcnk az <b>I (izol\u00e1ci\u00f3)<\/b> ezen r\u00f6vid\u00edt\u00e9sben.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Elszigetel\u00e9s<\/h2>\n<p>\nAz elszigetel\u00e9s megoldja az adatokhoz val\u00f3 hozz\u00e1f\u00e9r\u00e9s probl\u00e9m\u00e1j\u00e1t versenyk\u00f6rnyezetben, gyakorlatilag v\u00e9delmet ny\u00fajtva a versenyhelyzetekkel szemben. Ide\u00e1lis esetben az elszigetel\u00e9s szerializ\u00e1ci\u00f3t jelent, vagyis azt a tulajdons\u00e1got, amely biztos\u00edtja, hogy a tranzakci\u00f3k p\u00e1rhuzamos v\u00e9grehajt\u00e1s\u00e1nak eredm\u00e9nye ugyanaz legyen, mintha azokat sorozatban hajtott\u00e1k volna v\u00e9gre. Ennek az tulajdons\u00e1gnak a legnagyobb probl\u00e9m\u00e1ja, hogy technikailag nagyon nehezen biztos\u00edthat\u00f3, \u00e9s k\u00f6vetkez\u00e9sk\u00e9ppen s\u00falyosan befoly\u00e1solja a rendszer teljes\u00edtm\u00e9ny\u00e9t. Ez\u00e9rt az elszigetel\u00e9st gyakran gyeng\u00edtik, v\u00e1llalva bizonyos anom\u00e1li\u00e1k kialakul\u00e1s\u00e1nak kock\u00e1zat\u00e1t, amelyeket al\u00e1bb t\u00e1rgyalunk. Az anom\u00e1li\u00e1k megjelen\u00e9s\u00e9nek lehet\u0151s\u00e9ge jellemzi a tranzakci\u00f3k elszigetelts\u00e9gi szintj\u00e9t.<\/p>\n<p>A legismertebb anom\u00e1li\u00e1k a k\u00f6vetkez\u0151k: dirty read, non-repeatable read, phantom read, de val\u00f3j\u00e1ban m\u00e9g 5 l\u00e9tezik: dirty write, cursor lost update, lost update, read skew, write skew.<\/p>\n<h2>Dirty write<\/h2>\n<p>\nAz anom\u00e1lia l\u00e9nyege abban rejlik, hogy a tranzakci\u00f3k fel\u00fcl\u00edrhatj\u00e1k a nem elk\u00f6telezett adatokat.<\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/416d14593449b8b10d46c77804af772a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEz az anom\u00e1lia nemcsak az\u00e9rt vesz\u00e9lyes, mert az adatok \u00fctk\u00f6zhetnek a tranzakci\u00f3k mindk\u00e9t elk\u00f6telez\u00e9se ut\u00e1n (ahogyan az a k\u00e9pen is l\u00e1that\u00f3), hanem az\u00e9rt is, mert megs\u00e9rti az atomarit\u00e1st: mivel megengedj\u00fck, hogy fel\u00fcl\u00edrjuk a nem elk\u00f6telezett adatokat, nem vil\u00e1gos, hogyan lehet visszag\u00f6rgetni egy tranzakci\u00f3t an\u00e9lk\u00fcl, hogy a m\u00e1sikra is hat\u00e1ssal lenn\u00e9nk. <\/p>\n<p>Az anom\u00e1li\u00e1t viszonylag egyszer\u0171en kezelhetj\u00fck: \u00edr\u00e1s el\u0151tt z\u00e1rol\u00e1st alkalmazunk, megakad\u00e1lyozva m\u00e1s tranzakci\u00f3k sz\u00e1m\u00e1ra, hogy a feljegyz\u00e9st m\u00f3dos\u00edts\u00e1k, am\u00edg a z\u00e1rol\u00e1s fel nem old\u00f3dik. <\/p>\n<h2>Dirty read<\/h2>\n<p>\nA dirty read az elk\u00f6telezetlen adatok elolvas\u00e1s\u00e1t jelenti. <\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/133a48a7a1b91a085e3ade73de517e3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProbl\u00e9m\u00e1k mer\u00fclnek fel, amikor a mintav\u00e9tel alapj\u00e1n valamilyen m\u0171veleteket kell v\u00e9grehajtani vagy d\u00f6nt\u00e9seket kell hozni.<\/p>\n<p>Anom\u00e1li\u00e1k kijav\u00edt\u00e1s\u00e1hoz olvas\u00e1si z\u00e1rol\u00e1st lehet alkalmazni, de ez jelent\u0151sen rontja a teljes\u00edtm\u00e9nyt. Sokkal egyszer\u0171bb azt mondani, hogy a tranzakci\u00f3 rollback eset\u00e9n a rendszernek felt\u00e9tlen\u00fcl meg kell \u0151riznie az adatok kezdeti \u00e1llapot\u00e1t (a fel\u00edr\u00e1s el\u0151tt). Mi\u00e9rt ne olvasn\u00e1nk onnan? Ez el\u00e9g olcs\u00f3, ez\u00e9rt a legt\u00f6bb adatb\u00e1zis alap\u00e9rtelmez\u00e9s szerint elt\u00e1vol\u00edtja a dirty read-et. <\/p>\n<h2>Elveszett friss\u00edt\u00e9s<\/h2>\n<p>\nAz elveszett friss\u00edt\u00e9s elveszett friss\u00edt\u00e9seket jelent, \u00e9s a ford\u00edt\u00e1s el\u00e9g pontosan t\u00fckr\u00f6zi a probl\u00e9ma l\u00e9nyeg\u00e9t:<\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/bed92d27aa9ad2330de4a5fa37991bf6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nVal\u00f3j\u00e1ban a T2 tranzakci\u00f3 eredm\u00e9nye visszavon\u00e1sra ker\u00fclt. Ilyen helyzetet ny\u00edlt vagy rejtett z\u00e1rol\u00e1sokkal lehet megoldani. Teh\u00e1t vagy egyszer\u0171en csak friss\u00edtj\u00fck a rekordot, \u00e9s akkor rejtett z\u00e1rol\u00e1s l\u00e9p fel, vagy v\u00e9grehajtjuk <b>select for update<\/b>, ami olvas\u00e1si \u00e9s \u00edr\u00e1si z\u00e1rol\u00e1s keletkez\u00e9s\u00e9t id\u00e9zi el\u0151. Vegye figyelembe, hogy ez a m\u0171velet meglehet\u0151sen vesz\u00e9lyes: a \"b\u0171n\u00f6s\" olvas\u00e1sunk blokkolja a t\u00f6bbi olvas\u00e1st. N\u00e9h\u00e1ny adatb\u00e1zis biztons\u00e1gosabb <b>select for share<\/b>, amely lehet\u0151v\u00e9 teszi az adatok olvas\u00e1s\u00e1t, de nem enged\u00e9lyezi a m\u00f3dos\u00edt\u00e1sokat. <\/p>\n<h2>Kurzor elveszett friss\u00edt\u00e9s<\/h2>\n<p>\nFinomabb ellen\u0151rz\u00e9s \u00e9rdek\u00e9ben az adatb\u00e1zisok m\u00e1s eszk\u00f6z\u00f6ket is k\u00edn\u00e1lhatnak, p\u00e9ld\u00e1ul kurzorokat. A kurzor egy olyan strukt\u00fara, amely egy sor halmazt tartalmaz, \u00e9s lehet\u0151v\u00e9 teszi azok bej\u00e1r\u00e1s\u00e1t. <b>declare cursor_name for select_statement<\/b>. A kurzor tartalm\u00e1t select hat\u00e1rozza meg. <\/p>\n<p>Mire val\u00f3 a kurzor? Az a helyzet, hogy egyes adatb\u00e1zisok z\u00e1rol\u00e1st k\u00edn\u00e1lnak az \u00f6sszes felvett rekordra, amelyet a select v\u00e1laszt ki (read stability), vagy csak arra a rekordra, amelyen \u00e9ppen a kurzor \u00e1ll (cursor stability). A cursor stability eset\u00e9n r\u00f6vid z\u00e1rol\u00e1s val\u00f3sul meg, ami cs\u00f6kkenti a z\u00e1rol\u00e1sok sz\u00e1m\u00e1t, ha nagy adathalmazon iter\u00e1lunk. Ez\u00e9rt a lost update anom\u00e1li\u00e1t k\u00fcl\u00f6n kiemelik a kurzor sz\u00e1m\u00e1ra.<\/p>\n<h2>Nem megism\u00e9telhet\u0151 olvas\u00e1s<\/h2>\n<p>\nA nem megism\u00e9telhet\u0151 olvas\u00e1s abban rejlik, hogy a tranzakci\u00f3nk v\u00e9grehajt\u00e1sa sor\u00e1n 2 egym\u00e1st k\u00f6vet\u0151 olvas\u00e1s ugyanarr\u00f3l a rekordr\u00f3l k\u00fcl\u00f6nb\u00f6z\u0151 eredm\u00e9nyekhez vezet, mert egy m\u00e1sik tranzakci\u00f3 k\u00f6zbeavatkozott a k\u00e9t olvas\u00e1s k\u00f6z\u00f6tt, megv\u00e1ltoztatta az adatainkat, \u00e9s elk\u00f6telezte azt. <\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/7954d2fbcbda3904240eae39ba5e9bbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMi\u00e9rt is lenne ez probl\u00e9ma? K\u00e9pzelje el, hogy a T2 tranzakci\u00f3 c\u00e9lja a k\u00e9pen az \u00f6sszes olyan term\u00e9k kiv\u00e1laszt\u00e1sa, amelynek \u00e1ra kevesebb, mint 150 egys\u00e9g. Valaki m\u00e1s 200 egys\u00e9gre emelte az \u00e1rat. \u00cdgy a be\u00e1ll\u00edtott sz\u0171r\u0151 nem m\u0171k\u00f6dik.<\/p>\n<p>Az adatok anom\u00e1li\u00e1i megsz\u0171nnek, ha k\u00e9thetes z\u00e1rlatokat adunk hozz\u00e1, vagy ha MVCC mechanizmust haszn\u00e1lunk, amir\u0151l szeretn\u00e9m k\u00fcl\u00f6n megeml\u00edteni. <\/p>\n<h2>Fantoms olvas\u00e1s<\/h2>\n<p>\nFantoms olvas\u00e1snak nevezz\u00fck azokat az adatokat, amelyeket egy m\u00e1sik tranzakci\u00f3 hozz\u00e1adott. <\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/4f5e62205bac4b9422f6631f171ca11d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nP\u00e9ld\u00e1ul megfigyelhetj\u00fck a legolcs\u00f3bb term\u00e9k hib\u00e1s lek\u00e9rdez\u00e9s\u00e9t, amikor ez az anom\u00e1lia bek\u00f6vetkezik. <\/p>\n<p>A fantoms olvas\u00e1sokt\u00f3l val\u00f3 megszabadul\u00e1s m\u00e1r el\u00e9g neh\u00e9z. A hagyom\u00e1nyos z\u00e1rlatok nem elegend\u0151ek, hiszen nem tudjuk z\u00e1rolni azt, ami m\u00e9g nem l\u00e9tezik. A 2PL rendszerek predikt\u00edv z\u00e1rlatokat haszn\u00e1lnak, m\u00edg az MVCC rendszerek a tranzakci\u00f3 tervrajz\u00e1t t\u00f6rlik, amelyeket megszak\u00edthat a besz\u00far\u00e1s. Az els\u0151 \u00e9s m\u00e1sodik mechanizmus is el\u00e9g neh\u00e9zkes.<\/p>\n<h2>Read skew<\/h2>\n<p>\nA read skew akkor jelentkezik, amikor t\u00f6bb t\u00e1bl\u00e1val dolgozunk, amelyeknek az adatai \u00f6sszhangban kell, hogy v\u00e1ltozzanak. <\/p>\n<p>Tegy\u00fck fel, hogy vannak t\u00e1bl\u00e1k, amelyek a bejegyz\u00e9seket \u00e9s azok metaadatokat reprezent\u00e1lnak:<\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/e15440e44c41c0ac15d2c3349d1fae4e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAz egyik tranzakci\u00f3 olvas a t\u00e1bl\u00e1kb\u00f3l, a m\u00e1sik m\u00f3dos\u00edtja \u0151ket:<\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/b89da5ae2d926ed0061cb90917d8a1ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA T1 tranzakci\u00f3 v\u00e9grehajt\u00e1sa ut\u00e1n a bejegyz\u00e9s title = Good, a updated_by = T2, ami bizonyos elt\u00e9r\u00e9st jelent. <\/p>\n<p>Val\u00f3j\u00e1ban ez non-repeatable read, de t\u00f6bb t\u00e1bl\u00e1n bel\u00fcl.<\/p>\n<p>A megold\u00e1s \u00e9rdek\u00e9ben a T1 blokkolhatja az \u00f6sszes sorozatot, amelyet olvasni fog, ami megakad\u00e1lyozza, hogy a T2 tranzakci\u00f3 m\u00f3dos\u00edtsa az inform\u00e1ci\u00f3t. MVCC eset\u00e9n a T2 tranzakci\u00f3t t\u00f6rlik. Ennek az anom\u00e1li\u00e1nak a v\u00e9delme fontos lehet, ha kurzorokat haszn\u00e1lunk. <\/p>\n<h2>Write skew<\/h2>\n<p>\nEzt az anom\u00e1li\u00e1t szint\u00e9n egyszer\u0171bb p\u00e9ld\u00e1val magyar\u00e1zni: tegy\u00fck fel, hogy a rendszer\u00fcnkben legal\u00e1bb egy orvosnak \u00fcgyeletben kell lennie, de mindketten \u00fagy d\u00f6nt\u00f6ttek, hogy lemondj\u00e1k az \u00fcgyelet\u00fcket:<\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/7c6e4410224c3fcc9c564369535644e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/8723c2dfe3e4b97ded601da2f89a77b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAz anom\u00e1lia oda vezetett, hogy egyik orvos sem \u00f6lt\u00f6zik fel \u00fcgyeletre. Mi\u00e9rt t\u00f6rt\u00e9nt ez? Mert a tranzakci\u00f3 olyan felt\u00e9telt ellen\u0151rz\u00f6tt, amelyet egy m\u00e1sik tranzakci\u00f3 megszak\u00edthatott, \u00e9s az elszigetelts\u00e9g miatt nem l\u00e1ttuk ezt a v\u00e1ltoz\u00e1st.<\/p>\n<p>Ez ugyanaz, mint a non-repeatable read. Alternat\u00edvak\u00e9nt a select-ek z\u00e1rol\u00e1sokat k\u00f6thetnek ezekre a rekordokra.<\/p>\n<p>A write skew \u00e9s read skew az el\u0151z\u0151 anom\u00e1li\u00e1k kombin\u00e1ci\u00f3i. Vizsg\u00e1ljuk meg a write skew-t, amely l\u00e9nyeg\u00e9ben phantom read. N\u00e9zz\u00fcnk egy t\u00e1bl\u00e1zatot, ami tartalmazza az alkalmazottak neveit, fizet\u00e9s\u00fcket \u00e9s a projektet, amin dolgoznak:<\/p>\n<p><img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/2953d6148d07ded9e1a3d67428b14e67.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Milyen k\u00f6vetkezm\u00e9nyekkel j\u00e1rhat az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se?\" src=\"\/wp-content\/uploads\/2020\/05\/f77800e316708944aa32a9095ae6b132.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEnnek eredm\u00e9nyek\u00e9nt a k\u00f6vetkez\u0151 k\u00e9p \u00e1llt el\u0151: minden menedzser \u00fagy gondolta, hogy a v\u00e1ltoztat\u00e1saik nem vezetnek k\u00f6lts\u00e9gt\u00fall\u00e9p\u00e9shez, ez\u00e9rt szem\u00e9lyi v\u00e1ltoztat\u00e1sokat hajtottak v\u00e9gre, amelyek \u00f6sszess\u00e9g\u00e9ben t\u00fall\u00e9p\u00e9shez vezettek. <\/p>\n<p>A probl\u00e9ma keletkez\u00e9s\u00e9nek oka pontosan ugyanaz, mint a phantom read eset\u00e9ben. <\/p>\n<h2>K\u00f6vetkeztet\u00e9sek<\/h2>\n<p>\nAz adatb\u00e1zis tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se a biztons\u00e1g \u00e9s a teljes\u00edtm\u00e9ny k\u00f6z\u00f6tti kompromisszum, ez\u00e9rt ennek a szintnek a megv\u00e1laszt\u00e1sakor figyelembe kell venni a potenci\u00e1lis \u00fczleti kock\u00e1zatokat, amelyek k\u00fcl\u00f6nb\u00f6z\u0151 anom\u00e1li\u00e1k eset\u00e9n felmer\u00fclhetnek.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">Tov\u00e1bbi inform\u00e1ci\u00f3 a tanfolyamr\u00f3l.<br \/>\n<\/a><\/noindex><\/p>\n<p>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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\udd47Mire vezethet az adatb\u00e1zisok tranzakci\u00f3s szintj\u00e9nek cs\u00f6kkent\u00e9se | ProHoster","description":"Hell\u00f3 mindenkinek. Itt Vladiszl\u00e1v Rodin.","canonical_url":"https:\/\/prohoster.info\/hu\/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":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/83337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=83337"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/83337\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/83338"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=83337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=83337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=83337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}