{"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\/de\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh","title":{"rendered":"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Hallo zusammen. Hier ist Wladyslaw Rodin. Ich bin derzeit Leiter des Kurses \u201eArchitekt f\u00fcr hohe Lasten\u201c bei OTUS und unterrichte auch in Kursen \u00fcber Softwarearchitektur.<br \/>\n<\/i><br \/>\n<b><i>Neben dem Unterricht schreibe ich, wie Sie wahrscheinlich bemerkt haben, Originalbeitr\u00e4ge f\u00fcr den OTUS-Blog auf Habr und m\u00f6chte den heutigen Artikel dem Start des Kurses widmen, <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">\u201ePostgreSQL\u201c<\/a><\/noindex>f\u00fcr den gerade jetzt die Anmeldung ge\u00f6ffnet ist.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/acfb562f4e72d657c09f5ce00acdf80b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Einf\u00fchrung<\/h2>\n<p>\nIn <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/494652\/\">das letzte Mal<\/a><\/noindex> Wir haben dar\u00fcber gesprochen, dass Transaktionen in Datenbanken zwei Aufgaben l\u00f6sen: die Gew\u00e4hrleistung der Fehlertoleranz und den Datenzugriff in einer konkurrierenden Umgebung. Damit diese Aufgaben vollst\u00e4ndig erf\u00fcllt werden k\u00f6nnen, muss eine Transaktion die ACID-Eigenschaften besitzen. Heute werden wir ausf\u00fchrlich \u00fcber den Buchstaben <b>I (Isolation)<\/b> in diesem Akronym sprechen.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Isolierung<\/h2>\n<p>\nIsolation l\u00f6st das Problem des Zugriffs auf Daten in einer wettbewerbsorientierten Umgebung und bietet somit Schutz vor Race Conditions. Idealerweise bedeutet Isolation Serialisierung, also eine Eigenschaft, die sicherstellt, dass das Ergebnis der gleichzeitigen Ausf\u00fchrung von Transaktionen dem Ergebnis entspricht, als ob sie nacheinander ausgef\u00fchrt worden w\u00e4ren. Das Hauptproblem dieser Eigenschaft ist jedoch, dass sie technisch sehr schwer zu gew\u00e4hrleisten ist und folglich die Systemleistung erheblich beeintr\u00e4chtigen kann. Aus diesem Grund wird die Isolation h\u00e4ufig abgeschw\u00e4cht, indem Risiken f\u00fcr das Auftreten bestimmter Anomalien in Kauf genommen werden, die im Folgenden erl\u00e4utert werden. Die M\u00f6glichkeit des Auftretens solcher oder anderer Anomalien kennzeichnet gerade den Grad der Isolation von Transaktionen.<\/p>\n<p>Die bekanntesten Anomalien sind: Dirty Read, Non-repeatable Read, Phantom Read, tats\u00e4chlich gibt es noch f\u00fcnf weitere: Dirty Write, Cursor Lost Update, Lost Update, Read Skew, Write Skew.<\/p>\n<h2>Dirty Write<\/h2>\n<p>\nDie Essenz der Anomalie besteht darin, dass Transaktionen nicht best\u00e4tigte Daten \u00fcberschreiben k\u00f6nnen.<\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/416d14593449b8b10d46c77804af772a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDiese Anomalie ist gef\u00e4hrlich, nicht nur weil Daten nach dem Commit beider Transaktionen in Konflikt geraten k\u00f6nnen (wie im Bild), sondern auch weil die Atomarit\u00e4t verletzt wird: Da wir das \u00dcberschreiben von nicht-committierten Daten zulassen, ist unklar, wie man eine Transaktion zur\u00fccksetzen kann, ohne dabei die andere zu beeintr\u00e4chtigen. <\/p>\n<p>Die Anomalie l\u00e4sst sich relativ einfach beheben: Wir setzen vor Beginn des Schreibvorgangs eine Schreibsperre, die es anderen Transaktionen verbietet, die Aufzeichnung zu \u00e4ndern, bis die Sperre aufgehoben wird. <\/p>\n<h2>Dirty read<\/h2>\n<p>\nDirty read bedeutet das Lesen von nicht-committierten Daten. <\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/133a48a7a1b91a085e3ade73de517e3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProbleme treten auf, wenn auf Basis einer Abfrage bestimmte Aktionen ausgef\u00fchrt oder Entscheidungen getroffen werden m\u00fcssen.<\/p>\n<p>Um eine Anomalie zu beheben, kann eine Lesesperre verh\u00e4ngt werden, was jedoch die Leistung erheblich beeintr\u00e4chtigt. Es ist viel einfacher zu sagen, dass f\u00fcr den Rollback einer Transaktion der urspr\u00fcngliche Zustand der Daten (vor Beginn der Schreibvorg\u00e4nge) unbedingt im System gespeichert sein muss. Warum also nicht von dort lesen? Das ist relativ kosteng\u00fcnstig, weshalb die meisten Datenbanken Dirty Reads standardm\u00e4\u00dfig ausschlie\u00dfen. <\/p>\n<h2>Lost update<\/h2>\n<p>\nLost update bedeutet verlorene Updates, und die \u00dcbersetzung gibt das Problem ausreichend genau wieder:<\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/bed92d27aa9ad2330de4a5fa37991bf6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTats\u00e4chlich wurde das Ergebnis der Transaktion T2 storniert. Solche Situationen werden durch explizite oder implizite Sperrungen des Datensatzes behoben. Das bedeutet, dass wir entweder einfach die Aktualisierung des Datensatzes durchf\u00fchren, wodurch eine implizite Sperre entsteht, oder wir f\u00fchren aus <b>select for update<\/b>, was zu einer Lesesperre und einer Schreibung f\u00fchrt. Beachten Sie, dass eine solche Operation recht riskant ist: Durch unser 'unschuldiges' Lesen sperren wir andere Lesevorg\u00e4nge. Einige Datenbanken bieten eine sicherere <b>select for share<\/b>, die das Lesen von Daten erm\u00f6glicht, jedoch keine \u00c4nderungen daran zul\u00e4sst. <\/p>\n<h2>Cursor lost update<\/h2>\n<p>\nF\u00fcr eine genauere Kontrolle k\u00f6nnen Datenbanken andere Werkzeuge anbieten, zum Beispiel einen Cursor. Ein Cursor ist eine Struktur, die eine Menge von Zeilen enth\u00e4lt und es erm\u00f6glicht, \u00fcber diese zu iterieren. <b>declare cursor_name for select_statement<\/b>. Der Inhalt des Cursors wird durch die SELECT-Anweisung beschrieben. <\/p>\n<p>Warum ist ein Cursor notwendig? Einige Datenbanken bieten eine Sperre f\u00fcr alle Datens\u00e4tze, die durch einen Select-Befehl ausgew\u00e4hlt werden (Read Stability), oder nur f\u00fcr den Datensatz, auf dem sich der Cursor derzeit befindet (Cursor Stability). Bei der Cursor Stability wird ein Short Lock durchgef\u00fchrt, was die Anzahl der Sperren verringert, wenn wir durch eine gro\u00dfe Datenmenge iterieren. Daher wird die Anomalie Lost Update separat f\u00fcr den Cursor hervorgehoben.<\/p>\n<h2>Nicht wiederholbares Lesen<\/h2>\n<p>\nNicht wiederholbares Lesen tritt auf, wenn w\u00e4hrend der Ausf\u00fchrung unserer Transaktion zwei aufeinanderfolgende Lesevorg\u00e4nge des gleichen Datensatzes zu unterschiedlichen Ergebnissen f\u00fchren, weil eine andere Transaktion zwischen diesen beiden Lesevorg\u00e4ngen eingreift, unsere Daten \u00e4ndert und dann abgeschlossen wird. <\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/7954d2fbcbda3904240eae39ba5e9bbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nWarum ist das \u00fcberhaupt ein Problem? Stellen Sie sich vor, das Ziel der Transaktion T2 auf dem Bild besteht darin, alle Artikel auszuw\u00e4hlen, deren Preis unter 150 W\u00e4hrungseinheiten liegt. Jemand hat den Preis auf 200 W\u00e4hrungseinheiten aktualisiert. Der festgelegte Filter hat dadurch nicht funktioniert.<\/p>\n<p>Diese Datenanomalien treten nicht mehr auf, wenn zwei-phasige Sperren hinzugef\u00fcgt werden oder wenn das MVCC-Mechanismus verwendet wird, \u00fcber das wir gesondert sprechen m\u00f6chten. <\/p>\n<h2>Phantomlesen<\/h2>\n<p>\nPhantome werden als das Lesen von Daten bezeichnet, die von einer anderen Transaktion hinzugef\u00fcgt wurden. <\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/4f5e62205bac4b9422f6631f171ca11d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEin Beispiel hierf\u00fcr ist die falsche Auswahl des billigsten Produkts, wenn diese Anomalie auftritt. <\/p>\n<p>Phantomlesungen zu beseitigen ist bereits schwierig genug. Gew\u00f6hnliche Sperren sind nicht ausreichend, da wir nicht das blockieren k\u00f6nnen, was noch nicht existiert. 2PL-Systeme verwenden pr\u00e4dikative Sperren, w\u00e4hrend MVCC-Systeme Transaktionen zur\u00fccksetzen, die durch Einf\u00fcgungen gest\u00f6rt werden k\u00f6nnten. Sowohl der erste als auch der zweite Mechanismus sind recht schwerf\u00e4llig.<\/p>\n<h2>Read skew<\/h2>\n<p>\nRead skew tritt auf, wenn wir mit mehreren Tabellen arbeiten, deren Inhalt konsistent ge\u00e4ndert werden sollte. <\/p>\n<p>Angenommen, es gibt Tabellen, die Beitr\u00e4ge und deren Metainformationen darstellen:<\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/e15440e44c41c0ac15d2c3349d1fae4e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEine Transaktion liest aus den Tabellen, w\u00e4hrend eine andere sie ver\u00e4ndert:<\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/b89da5ae2d926ed0061cb90917d8a1ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn Folge der Ausf\u00fchrung der Transaktion T1 hat der Beitrag den Titel = Good und updated_by = T2, was eine gewisse Inkonsistenz darstellt. <\/p>\n<p>Tats\u00e4chlich ist dies ein non-repeatable read, jedoch \u00fcber mehrere Tabellen hinweg.<\/p>\n<p>Um das zu beheben, kann T1 Sperren auf alle Zeilen setzen, die sie lesen wird, was T2 daran hindert, Informationen zu \u00e4ndern. Im Falle von MVCC wird die Transaktion T2 abgebrochen. Der Schutz vor dieser Anomalie kann wichtig werden, wenn wir Cursor verwenden. <\/p>\n<h2>Write skew<\/h2>\n<p>\nDiese Anomalie l\u00e4sst sich ebenfalls leichter anhand eines Beispiels erkl\u00e4ren: Angenommen, in unserem System muss mindestens ein Arzt im Dienst sein, aber beide \u00c4rzte haben beschlossen, ihren Dienst abzusagen:<\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/7c6e4410224c3fcc9c564369535644e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/8723c2dfe3e4b97ded601da2f89a77b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDie Anomalie f\u00fchrte dazu, dass keiner der \u00c4rzte zum Dienst erscheint. Wie konnte das passieren? Weil die Transaktion eine Bedingung \u00fcberpr\u00fcfte, die von einer anderen Transaktion verletzt werden kann, und aufgrund der Isolation haben wir diese \u00c4nderung nicht gesehen.<\/p>\n<p>Dies ist dasselbe wie ein Non-Repeatable Read. Alternativ k\u00f6nnen Select-Befehle Sperren f\u00fcr diese Datens\u00e4tze setzen.<\/p>\n<p>Write Skew und Read Skew sind Kombinationen der vorhergehenden Anomalien. Wir k\u00f6nnen Write Skew betrachten, das im Grunde genommen ein Phantom Read ist. Betrachten wir eine Tabelle, in der die Namen der Mitarbeiter, ihre Geh\u00e4lter und die Projekte, an denen sie arbeiten, aufgef\u00fchrt sind:<\/p>\n<p><img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/2953d6148d07ded9e1a3d67428b14e67.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Welche Folgen kann eine Schw\u00e4chung des Isolationsniveaus in Datenbanktransaktionen haben?\" src=\"\/wp-content\/uploads\/2020\/05\/f77800e316708944aa32a9095ae6b132.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAm Ende ergibt sich folgendes Bild: Jeder Manager dachte, dass seine \u00c4nderung nicht zu Budget\u00fcberschreitungen f\u00fchren w\u00fcrde, weshalb sie personelle Ver\u00e4nderungen vorgenommen haben, die insgesamt zu Mehrkosten f\u00fchrten. <\/p>\n<p>Der Grund f\u00fcr das Auftreten des Problems ist genau der gleiche wie beim phantom reads. <\/p>\n<h2>Fazit<\/h2>\n<p>\nDie Herabsetzung des Isolationslevels von Transaktionen in Datenbanken ist ein Kompromiss zwischen Sicherheit und Leistung. Die Wahl dieses Levels sollte auf Basis der potenziellen Risiken f\u00fcr das Unternehmen bei dem Auftreten bestimmter Anomalien erfolgen.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">Weitere Informationen zum Kurs erhalten.<br \/>\n<\/a><\/noindex><\/p>\n<p>Quelle: <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\/de\/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=\"de_DE\" \/>\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\/de\/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\udd47Was kann die Herabsetzung des Isolationslevels von Transaktionen in Datenbanken zur Folge haben | ProHoster","description":"Hallo zusammen. Hier ist Wladislaw Rodin. Ich bin momentan der Kursleiter des Kurses \u201eArchitekt f\u00fcr hohe Lasten\u201c bei OTUS und unterrichte auch in Kursen, die sich mit Softwarearchitektur besch\u00e4ftigen. Neben dem Unterrichten, wie Sie vielleicht bemerkt haben, schreibe ich auch Autorenmaterial f\u00fcr den OTUS-Blog auf Habr und der heutige Artikel soll dem Start des Kurses \u201ePostgreSQL\u201c gewidmet sein, der gerade jetzt","canonical_url":"https:\/\/prohoster.info\/de\/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":"de_DE","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\/de\/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\/de\/wp-json\/wp\/v2\/posts\/83337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=83337"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/83337\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/83338"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=83337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=83337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=83337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}