{"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\/pl\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh","title":{"rendered":"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Cze\u015b\u0107 wszystkim. Z tej strony W\u0142adys\u0142aw Rodin. Obecnie jestem kierownikiem kursu \u201eArchitekt wysokich obci\u0105\u017ce\u0144\u201d w OTUS i ucz\u0119 na kursach dotycz\u0105cych architektury oprogramowania.<br \/>\n<\/i><br \/>\n<b><i>Opr\u00f3cz nauczania, jak mogli\u015bcie zauwa\u017cy\u0107, zajmuj\u0119 si\u0119 pisaniem autorskiego materia\u0142u dla bloga OTUS na Habrze, a dzisiejszy artyku\u0142 chc\u0119 po\u015bwi\u0119ci\u0107 uruchomieniu kursu <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">\u201ePostgreSQL\u201d<\/a><\/noindex>, na kt\u00f3ry obecnie trwa rekrutacja.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/acfb562f4e72d657c09f5ce00acdf80b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Wprowadzenie<\/h2>\n<p>\nW <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/494652\/\">ostatni raz<\/a><\/noindex> Rozmawiali\u015bmy o tym, \u017ce transakcje w bazach danych s\u0142u\u017c\u0105 do rozwi\u0105zania dw\u00f3ch zada\u0144: zapewnienia odporno\u015bci na b\u0142\u0119dy i dost\u0119pu do danych w konkurencyjnym \u015brodowisku. Aby w pe\u0142ni realizowa\u0107 te zadania, transakcja musi mie\u0107 w\u0142a\u015bciwo\u015bci ACID. Dzi\u015b szczeg\u00f3\u0142owo porozmawiamy o literze <b>I (izolacja)<\/b> w tym skr\u00f3cie.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Izolacja<\/h2>\n<p>\nIzolacja rozwi\u0105zuje problem dost\u0119pu do danych w konkurencyjnym \u015brodowisku, faktycznie zapewniaj\u0105c ochron\u0119 przed wy\u015bcigiem warunk\u00f3w. W idealnym przypadku, izolacja oznacza serializacj\u0119, czyli w\u0142a\u015bciwo\u015b\u0107 zapewniaj\u0105c\u0105, \u017ce wyniki wykonania transakcji r\u00f3wnolegle s\u0105 takie same, jak gdyby by\u0142y wykonywane sekwencyjnie. G\u0142\u00f3wnym problemem tej w\u0142a\u015bciwo\u015bci jest to, \u017ce jest ona trudna do zapewnienia technicznie i w zwi\u0105zku z tym mocno obci\u0105\u017ca wydajno\u015b\u0107 systemu. Dlatego isolacj\u0119 cz\u0119sto os\u0142abia si\u0119, akceptuj\u0105c ryzyko wyst\u0105pienia pewnych anomalii, o kt\u00f3rych mowa b\u0119dzie poni\u017cej. Mo\u017cliwo\u015b\u0107 wyst\u0105pienia r\u00f3\u017cnych anomalii charakteryzuje w\u0142a\u015bnie poziom izolacji transakcji.<\/p>\n<p>Najbardziej znane anomalie to: brudne odczyty, niepowtarzalne odczyty, fantomowe odczyty, ale tak naprawd\u0119 jest ich jeszcze 5: brudne zapisy, utrata kursora, utrata aktualizacji, rozrzut odczytu, rozrzut zapisu.<\/p>\n<h2>Brudny zapis<\/h2>\n<p>\nIstota anomalii polega na tym, \u017ce transakcje mog\u0105 nadpisywa\u0107 niezako\u0144czone dane.<\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/416d14593449b8b10d46c77804af772a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTa anomalia jest niebezpieczna nie tylko dlatego, \u017ce dane mog\u0105 konfliktowa\u0107 po zatwierdzeniu obu transakcji (jak na obrazku), ale r\u00f3wnie\u017c dlatego, \u017ce narusza atomowo\u015b\u0107: poniewa\u017c zezwalamy na nadpisywanie niezako\u0144czonych danych, nie jest jasne, jak cofn\u0105\u0107 jedn\u0105 transakcj\u0119, nie wp\u0142ywaj\u0105c na drug\u0105. <\/p>\n<p>Naprawienie anomalii jest do\u015b\u0107 proste: nak\u0142adamy blokad\u0119 na zapis przed rozpocz\u0119ciem zapisu, zabraniaj\u0105c innym transakcjom zmienia\u0107 zapis, dop\u00f3ki blokada nie zostanie zdj\u0119ta. <\/p>\n<h2>Brudny odczyt<\/h2>\n<p>\nDirty read oznacza odczyt niezatwierdzonych danych. <\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/133a48a7a1b91a085e3ade73de517e3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProblemy wyst\u0119puj\u0105, gdy na podstawie pr\u00f3by konieczne jest podj\u0119cie jakich\u015b dzia\u0142a\u0144 lub podj\u0119cie decyzji.<\/p>\n<p>Aby naprawi\u0107 anomali\u0119, mo\u017cna na\u0142o\u017cy\u0107 blokad\u0119 na odczyt, ale to znacz\u0105co wp\u0142ynie na wydajno\u015b\u0107. Du\u017co \u0142atwiej powiedzie\u0107, \u017ce dla rollbacku transakcji, pierwotny stan danych (przed rozpocz\u0119ciem zapisu) musi by\u0107 zachowany w systemie. Dlaczego by nie odczyta\u0107 stamt\u0105d? To do\u015b\u0107 tanie, dlatego wi\u0119kszo\u015b\u0107 baz danych domy\u015blnie eliminuj\u0105 dirty read. <\/p>\n<h2>Lost update<\/h2>\n<p>\nLost update oznacza utracone aktualizacje, a t\u0142umaczenie do\u015b\u0107 dok\u0142adnie oddaje istot\u0119 problemu:<\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/bed92d27aa9ad2330de4a5fa37991bf6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW rzeczywisto\u015bci wynik transakcji T2 zosta\u0142 cofni\u0119ty. T\u0119 sytuacj\u0119 mo\u017cna naprawi\u0107 jawymi lub niejawymi blokadami zapisu. To znaczy, albo po prostu wykonujemy aktualizacj\u0119 zapisu, a wtedy zachodzi niejawna blokada, albo wykonujemy <b>select for update<\/b>, co powoduje powstanie blokady na odczycie i zapisie. Zauwa\u017c, \u017ce taka operacja jest do\u015b\u0107 niebezpieczna: swoim \"niewinnym\" odczytem blokujemy inne odczyty. Niekt\u00f3re bazy oferuj\u0105 bardziej bezpieczne <b>select for share<\/b>, kt\u00f3re pozwala odczytywa\u0107 dane, ale nie pozwala ich zmienia\u0107. <\/p>\n<h2>Cursor lost update<\/h2>\n<p>\nAby uzyska\u0107 bardziej szczeg\u00f3\u0142ow\u0105 kontrol\u0119, bazy mog\u0105 oferowa\u0107 inne narz\u0119dzia, na przyk\u0142ad kursor. Kursor to struktura zawieraj\u0105ca zbi\u00f3r wierszy, kt\u00f3ra pozwala na iteracj\u0119 po nich. <b>declare cursor_name for select_statement<\/b>. Zawarto\u015b\u0107 kursora jest opisana przez select. <\/p>\n<p>Po co potrzebny jest kursor? Rzecz w tym, \u017ce niekt\u00f3re bazy danych oferuj\u0105 blokad\u0119 na wszystkie rekordy wybrane przez select (stabilno\u015b\u0107 odczytu), lub tylko na ten rekord, na kt\u00f3rym obecnie znajduje si\u0119 kursor (stabilno\u015b\u0107 kursora). Przy stabilno\u015bci kursora odbywa si\u0119 kr\u00f3tka blokada, co pozwala zmniejszy\u0107 liczb\u0119 blokad w przypadku, gdy iterujemy przez du\u017c\u0105 pr\u00f3bk\u0119 danych. Dlatego anomali\u0119 lost update wydziela si\u0119 dla kursora osobno.<\/p>\n<h2>Non-repeatable read<\/h2>\n<p>\nNon-repeatable read polega na tym, \u017ce podczas wykonywania naszej transakcji 2 kolejne odczyty tego samego zapisu spowoduj\u0105 uzyskanie r\u00f3\u017cnych wynik\u00f3w, poniewa\u017c inna transakcja wtr\u0105ci\u0142a si\u0119 pomi\u0119dzy tymi dwoma odczytami, zmieni\u0142a nasze dane i zosta\u0142a zatwierdzona. <\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/7954d2fbcbda3904240eae39ba5e9bbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDlaczego to w og\u00f3le jest problemem? Wyobra\u017a sobie, \u017ce celem transakcji T2 na rysunku jest wybranie wszystkich produkt\u00f3w, kt\u00f3rych cena jest ni\u017csza ni\u017c 150 jednostek. Kto\u015b inny zaktualizowa\u0142 cen\u0119 do 200 jednostek. W ten spos\u00f3b ustalony filtr nie zadzia\u0142a\u0142.<\/p>\n<p>Dane anomalii przestaj\u0105 wyst\u0119powa\u0107 po dodaniu blokad dwuetapowych lub po zastosowaniu mechanizmu MVCC, o czym chcia\u0142bym porozmawia\u0107 osobno. <\/p>\n<h2>Odczyt phantomowy<\/h2>\n<p>\nOdczyt phantomowy odnosi si\u0119 do odczytu danych, kt\u00f3re zosta\u0142y dodane przez inn\u0105 transakcj\u0119. <\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/4f5e62205bac4b9422f6631f171ca11d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nNa przyk\u0142ad mo\u017cna zaobserwowa\u0107 b\u0142\u0119dny wyb\u00f3r najta\u0144szego produktu w przypadku wyst\u0105pienia tej anomalii. <\/p>\n<p>Pozbycie si\u0119 odczyt\u00f3w phantomowych jest ju\u017c wystarczaj\u0105co trudne. Zwyk\u0142a blokada nie wystarcza, poniewa\u017c nie mo\u017cemy zablokowa\u0107 tego, co jeszcze nie istnieje. Systemy 2PL korzystaj\u0105 z blokady predykatywnej, podczas gdy systemy MVCC, planista transakcji, anuluje transakcje, kt\u00f3re mog\u0105 by\u0107 naruszone przez wstawienie. Zar\u00f3wno jeden, jak i drugi mechanizm s\u0105 wystarczaj\u0105co zasobo\u017cerne.<\/p>\n<h2>Odczyt skew<\/h2>\n<p>\nOdczyt skew wyst\u0119puje, gdy pracujemy z wieloma tabelami, kt\u00f3rych zawarto\u015b\u0107 powinna zmienia\u0107 si\u0119 w spos\u00f3b sp\u00f3jny. <\/p>\n<p>Za\u0142\u00f3\u017cmy, \u017ce istniej\u0105 tabele reprezentuj\u0105ce posty i ich metainformacje:<\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/e15440e44c41c0ac15d2c3349d1fae4e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nJedna transakcja odczytuje z tabel, a druga je zmienia:<\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/b89da5ae2d926ed0061cb90917d8a1ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nW wyniku wykonania transakcji T1, post o tytule = Dobry, a updated_by = T2, co stanowi pewne niezgodno\u015bci. <\/p>\n<p>W rzeczywisto\u015bci jest to niepowtarzalny odczyt, ale w ramach kilku tabel.<\/p>\n<p>Aby to naprawi\u0107, T1 mo\u017ce na\u0142o\u017cy\u0107 blokady na wszystkie wiersze, kt\u00f3re b\u0119dzie odczytywa\u0107, co uniemo\u017cliwi transakcji T2 zmian\u0119 informacji. W przypadku MVCC transakcja T2 zostanie anulowana. Ochrona przed t\u0105 anomali\u0105 mo\u017ce by\u0107 wa\u017cna, je\u015bli korzystamy z kursor\u00f3w. <\/p>\n<h2>Odczyt skew<\/h2>\n<p>\nT\u0119 anomali\u0119 r\u00f3wnie\u017c \u0142atwiej wyja\u015bni\u0107 na przyk\u0142adzie: za\u0142\u00f3\u017cmy, \u017ce w naszym systemie przynajmniej jeden doktor musi by\u0107 na dy\u017curze, ale obaj lekarze postanowili odwo\u0142a\u0107 swoje dy\u017cury:<\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/7c6e4410224c3fcc9c564369535644e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/8723c2dfe3e4b97ded601da2f89a77b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAnomalia doprowadzi\u0142a do tego, \u017ce \u017caden z lekarzy nie wyst\u0105pi na dy\u017cur. Dlaczego tak si\u0119 sta\u0142o? Poniewa\u017c transakcja sprawdzi\u0142a warunek, kt\u00f3ry m\u00f3g\u0142 zosta\u0107 naruszony przez inn\u0105 transakcj\u0119, a z powodu izolacji nie zauwa\u017cyli\u015bmy tej zmiany.<\/p>\n<p>To ten sam non-repeatable read. Alternatywnie, selecty mog\u0105 nak\u0142ada\u0107 blokady na te rekordy.<\/p>\n<p>Write skew i read skew s\u0105 kombinacjami poprzednich anomalii. Mo\u017cna rozwa\u017cy\u0107 write skew, kt\u00f3ra zasadniczo jest phantom read. Rozwa\u017cmy tabel\u0119, w kt\u00f3rej znajduj\u0105 si\u0119 imiona pracownik\u00f3w, ich wynagrodzenia i projekty, nad kt\u00f3rymi pracuj\u0105:<\/p>\n<p><img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/2953d6148d07ded9e1a3d67428b14e67.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Jakie mog\u0105 by\u0107 konsekwencje os\u0142abienia poziomu izolacji transakcji w bazach danych\" src=\"\/wp-content\/uploads\/2020\/05\/f77800e316708944aa32a9095ae6b132.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nOstatecznie otrzymujemy nast\u0119puj\u0105cy obraz: ka\u017cdy menad\u017cer my\u015bla\u0142, \u017ce jego zmiana nie wywo\u0142a przekroczenia bud\u017cetu, w zwi\u0105zku z czym wprowadzili zmiany kadrowe, kt\u00f3re w sumie doprowadzi\u0142y do nadwy\u017cki wydatk\u00f3w. <\/p>\n<p>Przyczyna wyst\u0105pienia problemu jest dok\u0142adnie taka sama jak w przypadku phantom reading. <\/p>\n<h2>Wnioski<\/h2>\n<p>\nOs\u0142abienie poziomu izolacji transakcji w bazie danych stanowi kompromis pomi\u0119dzy bezpiecze\u0144stwem a wydajno\u015bci\u0105, a wyb\u00f3r tego poziomu powinien by\u0107 uzale\u017cniony od potencjalnych ryzyk dla biznesu w przypadku wyst\u0105pienia poszczeg\u00f3lnych anomalii.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">Dowiedz si\u0119 wi\u0119cej o kursie.<br \/>\n<\/a><\/noindex><\/p>\n<p>\u0179r\u00f3d\u0142o: <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\/pl\/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=\"pl_PL\" \/>\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\/pl\/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\udd47Do czego mo\u017ce prowadzi\u0107 os\u0142abienie poziomu izolacji transakcji w bazach danych | ProHoster","description":"Cze\u015b\u0107 wszystkim. Z tej strony W\u0142adys\u0142aw Rodin.","canonical_url":"https:\/\/prohoster.info\/pl\/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":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/83337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=83337"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/83337\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/83338"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=83337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=83337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=83337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}