Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Moien alleguer. De Vladislav Rodin ass a Kontakt. Ech sinn de Moment de Cours Leader fir den High Workload Architect Cours bei OTUS an léieren och Software Architektur Coursen.

Nieft dem Unterrécht, wéi Dir vläicht gemierkt hutt, schreiwen ech originell Material fir den OTUS Blog op Habré an ech wëll mam Artikel vun haut zesummefalen fir mat der Start vum Cours zesummen ze kommen "PostgreSQL", déi elo fir Aschreiwung op ass.

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Aféierung

В d'lescht Kéier mir geschwat iwwer d'Tatsaach, datt Transaktiounen an Datenbanken déngen zwee Problemer ze léisen: Feeler Toleranz an Zougang zu Daten an engem kompetitiv Ëmwelt ze garantéieren. Fir dës Aufgaben voll auszeféieren, muss d'Transaktioun ACID Properties hunn. Haut wäerte mir am Detail iwwer de Bréif schwätzen I (Isolatioun) an dëser Ofkierzung.

Isolatioun

Isolatioun léist de Problem vun Zougang zu Daten an engem kompetitiven Ëmfeld, am Wesentlechen Schutz vu Rassbedéngungen. Idealerweis heescht Isolatioun Serialiséierung, wat eng Eegeschafte ass déi garantéiert datt d'Resultat vun der Ausféierung vun Transaktiounen parallel d'selwecht ass wéi wa se sequentiell ausgefouert goufen. D'Haaptproblem mat dëser Propriétéit ass, datt et ganz schwéier ass technesch ze bidden an, als Resultat, huet e wesentlechen Impakt op System Leeschtung. Dofir ass d'Isolatioun oft geschwächt, d'Risike vu bestëmmten Anomalien akzeptéieren, déi hei ënnen diskutéiert ginn. D'Méiglechkeet vu bestëmmte Anomalien präzis charakteriséiert den Niveau vun der Transaktiounsisolatioun.

Déi bekanntst Anomalie sinn: dreckeg liesen, net widderhuelend Liesen, Phantom Liesen, awer tatsächlech ginn et 5 méi: dreckeg Schreiwen, Cursor verluer Update, verluer Update, Liesschréiwen, Schreiwen Schreifweis.

Dreckeg schreiwen

D'Essenz vun der Anomalie ass datt Transaktiounen onengagéiert Donnéeën iwwerschreiwe kënnen.

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Dës Anomalie ass geféierlech net nëmme well d'Donnéeën Konflikt kënne ginn nodeems se béid Transaktioune gemaach hunn (wéi an der Foto), awer och well d'Atomizitéit verletzt gëtt: well mir erlaben net engagéiert Donnéeën ze iwwerschreiwe, ass et net kloer wéi een eng Transaktioun zréckrollt ouni eng aner ze beaflossen .

D'Anomalie kann ganz einfach behandelt ginn: mir befestigen e Spär un de Rekord virum Start vun der Opnam, verbidden aner Transaktiounen de Rekord z'änneren bis d'Spär ewechgeholl gëtt.

Dreckeg liesen

Dreckeg liesen heescht net engagéiert Donnéeën liesen.

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Probleemer entstinn wann Handlungen oder Entscheedunge musse gemaach ginn op Basis vun der Probe.

Fir d'Anomalie ze korrigéieren, kënnt Dir e Liesschloss befestigen, awer dëst wäert d'Leeschtung staark beaflossen. Et ass vill méi einfach ze soen datt fir e Réckgang vun enger Transaktioun den initialen Zoustand vun den Donnéeën (virum Start vun der Opnam) am System gespäichert muss ginn. Firwat net vun do liesen? Et ass preiswert genuch datt déi meescht Datenbanken dreckeg liesen par défaut ewechhuelen.

Verluer Update

Verluer Aktualiséierung bedeit verluer Updates, an d'Iwwersetzung reflektéiert ganz präzis d'Essenz vum Problem:

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Tatsächlech gouf d'Resultat vun der Transaktioun T2 ëmgedréit. Dës Situatioun kann duerch explizit oder implizit Schreifschloss korrigéiert ginn. Dat ass, mir aktualiséieren entweder einfach de Rekord, an da geschitt eng implizit Spär, oder mir maachen wielt fir Update, wouduerch e Lies- a Schreifschloss geschitt. Notéiert w.e.g. datt esou eng Operatioun zimlech geféierlech ass: mat eiser "onschëlleger" Liesung blockéiere mir aner Liesungen. E puer Datenbanken bidden méi sécher wielt fir deelen, erlaabt datt d'Donnéeë gelies ginn, awer net geännert ginn.

Cursor verluer Update

Fir méi fein Kontroll kënnen d'Basen aner Tools ubidden, sou wéi e Cursor. E Cursor ass eng Struktur déi e Set vu Reihen enthält an Iech erlaabt iwwer si ze iteréieren. erklären cursor_name fir select_statement. D'Inhalter vum Cursor ginn duerch Auswiel beschriwwen.

Firwat braucht Dir e Cursor? D'Tatsaach ass, datt e puer Datenbanken e Spär bidden op all records ausgewielt duerch wielt (liesen Stabilitéit), oder nëmmen op de Rekord op deem de Cursor am Moment läit (Cursor Stabilitéit). Mat Cursorstabilitéit gëtt kuerz Spär ëmgesat, wat eis erlaabt d'Zuel vun de Spären ze reduzéieren wa mir iwwer eng grouss Probe vun Daten iteréieren. Dofir gëtt déi verluerene Update-Anomalie separat fir de Cursor isoléiert.

Net widderhuelend liesen

Net widderhuelend Liesung ass datt während der Ausféierung vun eiser Transaktioun 2 konsekutiv Liesungen vum selwechte Rekord zu verschiddene Resultater féieren, well eng aner Transaktioun tëscht dësen zwou Liesungen intervenéiert, eis Donnéeën geännert huet a sech engagéiert huet.

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Firwat ass dëst iwwerhaapt e Problem? Stellt Iech vir, datt d'Zil vun der Transaktioun T2 am Bild ass fir all Wueren ze wielen, deenen hire Präis manner wéi 150 USD ass. Een aneren huet de Präis op $200 aktualiséiert. Also huet den installéierten Filter net geschafft.

Dës Anomalien ophalen ze geschéien wann zwee-Phase interlocks dobäi ginn oder wann de MVCC Mechanismus benotzt gëtt, déi ech gären getrennt diskutéieren.

Phantom liesen

Phantom ass eng Liesung vun Daten déi vun enger anerer Transaktioun bäigefüügt goufen.

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Als Beispill kënne mir déi falsch Auswiel vum bëllegste Produkt beobachten wann dës Anomalie geschitt.

D'Phantomliesen lass ze ginn ass scho relativ schwéier. Regelméisseg Spären geet net duer, well mir kënnen net eppes blockéieren wat et nach net gëtt. 2PL Systemer benotzen prediktiv Sperrung, während MVCC Systemer en Transaktiounsplaner hunn, deen Transaktiounen zréckrullt, déi vun engem Insert gestéiert kënne ginn. Souwuel déi éischt an zweet Mechanismen sinn zimlech schwéier.

Schief liesen

Liesen Skew geschitt wa mir mat verschiddenen Dëscher schaffen, den Inhalt vun deenen muss konsequent änneren.

Loosst eis soen datt mir Tabellen hunn déi Posts an hir Metainformatioun representéieren:

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Eng Transaktioun liest aus den Dëscher, déi aner ännert se:

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Als Resultat vun der Transaktioun T1 huet d'Post Titel = Gutt, an updated_by = T2, wat eng Zort Inkonsistenz ass.

Tatsächlech ass dëst eng net widderhuelend Liesung, awer als Deel vu verschiddenen Dëscher.

Fir dëst ze fixéieren, kann T1 Spären op all Zeilen setzen, déi se liesen, wat d'Transaktioun T2 verhënnert datt d'Informatioun geännert gëtt. Am Fall vun MVCC gëtt d'T2 Transaktioun annuléiert. Schutz géint dës Anomalie ka wichteg ginn wa mir Cursoren benotzen.

Schreiwen Schreifweis

Dës Anomalie ass och méi einfach mat engem Beispill z'erklären: ugeholl datt an eisem System op d'mannst een Dokter op der Pflicht soll sinn, awer béid Dokteren hunn decidéiert hir Pflicht ze annuléieren:

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

D'Anomalie huet gemengt, datt keen vun den Dokteren am Asaz wier. Firwat ass dat geschitt? Well d'Transaktioun eng Konditioun kontrolléiert, déi duerch eng aner Transaktioun verletzt ka ginn, a wéinst der Isolatioun hu mir dës Ännerung net gesinn.

Dëst ass déiselwecht net widderhuelend Liesung. Alternativ, wielt kann Spären op dës records Plaz.

Schreiwen a Liesen Schréiegt sinn Kombinatioune vun de fréiere Anomalien. Dir kënnt Schreifweis berécksiichtegen, wat am Fong eng Phantom Liesung ass. Betruecht eng Tabell déi d'Nimm vun de Mataarbechter enthält, hir Gehälter, an de Projet un deem se schaffen:

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Wat kann aus der Schwächung vum Transaktiounsisolatiounsniveau an Datenbanken resultéieren?

Als Resultat kréie mir folgend Bild: All Manager huet geduecht datt hir Ännerung net zum Budget iwwergoe géif, sou datt si Personalännerungen gemaach hunn, déi zesummen zu Käschteiwwerschëss gefouert hunn.

D'Ursaach vum Problem ass genau d'selwecht wéi am Phantom Liesen.

Conclusiounen

D'Entspanung vum Transaktiounsisolatiounsniveau an der Datebank ass en Ofwiesselung tëscht Sécherheet a Leeschtung; d'Wiel vun dësem Niveau soll op Basis vun de potenzielle Risiken fir d'Geschäft ugeholl ginn wa verschidde Anomalien optrieden.

Léiert méi iwwer de Cours.

Source: will.com

Setzt e Commentaire