{"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\/it\/blog\/administrirovanie\/k-chemu-mozhet-privesti-oslablenie-urovnya-izolyaczii-tranzakczij-v-bazah-dannyh","title":{"rendered":"Quali conseguenze pu\u00f2 avere l'indebolimento del livello di isolamento delle transazioni nei database","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Ciao a tutti. Sono Vladislav Rodin. Attualmente sono il responsabile del corso \"Architetto di carichi elevati\" in OTUS e insegno anche corsi dedicati all'architettura del software.<br \/>\n<\/i><br \/>\n<b><i>Oltre all'insegnamento, come avrete notato, scrivo materiale originale per il blog di OTUS su Habr e l'articolo di oggi \u00e8 dedicato al lancio del corso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">\u00abPostgreSQL\u00bb<\/a><\/noindex>, che attualmente \u00e8 aperto alle iscrizioni.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/acfb562f4e72d657c09f5ce00acdf80b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Introduzione<\/h2>\n<p>\nIn <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/494652\/\">la volta scorsa<\/a><\/noindex> Abbiamo discusso del fatto che le transazioni nei database servono a risolvere due compiti: garantire la resistenza ai guasti e l'accesso ai dati in un ambiente concorrente. Per svolgere correttamente questi compiti, una transazione deve avere le propriet\u00e0 ACID. Oggi parleremo in dettaglio della lettera <b>I (isolamento)<\/b> in questa abbreviazione.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Isolamento<\/h2>\n<p>\nL'isolamento affronta la questione dell'accesso ai dati in un ambiente competitivo, fornendo in effetti una protezione contro le condizioni di race. Idealmente, l'isolamento implica la serializzazione, cio\u00e8 una propriet\u00e0 che garantisce che il risultato delle transazioni eseguite in parallelo sia lo stesso di quello che si otterrebbe se venissero eseguite in modo sequenziale. Il problema fondamentale di questa propriet\u00e0 \u00e8 che \u00e8 molto difficile da garantire tecnicamente e, di conseguenza, incide notevolmente sulle prestazioni del sistema. Proprio per questo motivo, l'isolamento viene spesso allentato, accettando i rischi di alcune anomalie che verranno discusse di seguito. La possibilit\u00e0 di manifestarsi di tali o altre anomalie \u00e8 ci\u00f2 che caratterizza il livello di isolamento delle transazioni.<\/p>\n<p>Le anomalie pi\u00f9 conosciute sono: dirty read, non-repeatable read, phantom read, ma in realt\u00e0 ce ne sono altre 5: dirty write, cursor lost update, lost update, read skew, write skew.<\/p>\n<h2>Dirty write<\/h2>\n<p>\nL'essenza dell'anomalia \u00e8 che le transazioni possono sovrascrivere dati non ancora confermati.<\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/416d14593449b8b10d46c77804af772a.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuesta anomalia \u00e8 pericolosa non solo perch\u00e9 i dati possono confliggere dopo il commit di entrambe le transazioni (come nell'immagine), ma anche perch\u00e9 compromette l'atomicit\u00e0: poich\u00e9 consentiremo la sovrascrittura dei dati non impegnati, non \u00e8 chiaro come annullare una transazione senza toccare l'altra. <\/p>\n<p>La soluzione dell'anomalia \u00e8 abbastanza semplice: mettiamo un blocco sulla scrittura prima dell'inizio della registrazione, vietando ad altre transazioni di modificare la registrazione fino a quando il blocco non viene rimosso. <\/p>\n<h2>Dirty read<\/h2>\n<p>\nDirty read significa la lettura di dati non impegnati. <\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/133a48a7a1b91a085e3ade73de517e3d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nI problemi sorgono quando, sulla base del campionamento, \u00e8 necessario eseguire alcune operazioni o prendere decisioni.<\/p>\n<p>Per correggere l'anomalia, si pu\u00f2 imporre un blocco in lettura, ma ci\u00f2 influenzer\u00e0 notevolmente le prestazioni. \u00c8 molto pi\u00f9 semplice affermare che, per il rollback di una transazione, lo stato originale dei dati (prima dell'inizio della registrazione) deve essere necessariamente conservato nel sistema. Perch\u00e9 non leggere da l\u00ec? \u00c8 piuttosto economico, quindi la maggior parte dei database disabilita di default la lettura sporca. <\/p>\n<h2>Lost update<\/h2>\n<p>\nLost update significa aggiornamenti persi, e la traduzione riflette abbastanza accuratamente la natura del problema:<\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/bed92d27aa9ad2330de4a5fa37991bf6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn effetti, il risultato della transazione T2 \u00e8 stato annullato. Una situazione del genere si corregge tramite blocchi espliciti o impliciti della registrazione. Ci\u00f2 significa che possiamo semplicemente aggiornare la registrazione, il che provoca un blocco implicito, oppure possiamo eseguire <b>select for update<\/b>, causando la comparsa di un blocco sia in lettura che in scrittura. \u00c8 importante notare che questa operazione \u00e8 abbastanza rischiosa: con la nostra \u00abinnocente\u00bb lettura, blocchiamo altre letture. Alcuni database offrono un'opzione pi\u00f9 sicura, <b>select for share<\/b>, che consente di leggere i dati, ma non di modificarli. <\/p>\n<h2>Cursor lost update<\/h2>\n<p>\nPer un controllo pi\u00f9 fine, i database possono offrire altri strumenti, come i cursori. Un cursore \u00e8 una struttura che contiene un insieme di righe e consente di iterare su di esse. <b>declare cursor_name for select_statement<\/b>. Il contenuto del cursore \u00e8 descritto dal select. <\/p>\n<p>A cosa serve un cursore? Il fatto \u00e8 che alcuni database offrono la blocchi per tutte le righe selezionate tramite select (stabilit\u00e0 di lettura), oppure solo per la riga su cui attualmente si trova il cursore (stabilit\u00e0 del cursore). Con la stabilit\u00e0 del cursore, si applica un short lock, il che riduce il numero di blocchi nel caso in cui stiamo iterando su un grande insieme di dati. Pertanto, l'anomalia lost update \u00e8 evidenziata per il cursore separatamente.<\/p>\n<h2>Lettura non ripetibile<\/h2>\n<p>\nLa lettura non ripetibile si verifica quando durante l'esecuzione della nostra transazione 2 letture consecutive della stessa riga portano a risultati diversi, perch\u00e9 un'altra transazione \u00e8 intervenuta tra queste due letture, ha modificato i nostri dati ed \u00e8 stata committata. <\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/7954d2fbcbda3904240eae39ba5e9bbc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nPerch\u00e9 \u00e8 un problema? Immaginate che l'obiettivo della transazione T2 nell'immagine sia selezionare tutti i prodotti il cui prezzo \u00e8 inferiore a 150 u.e. Qualcun altro ha aggiornato il prezzo a 200 u.e. Quindi, il filtro impostato non ha funzionato.<\/p>\n<p>Queste anomalie smettono di verificarsi con l'aggiunta di blocchi a due fasi o utilizzando il meccanismo MVCC, di cui vorrei parlare separatamente. <\/p>\n<h2>Lettura fantasma<\/h2>\n<p>\nLa lettura fantasma si riferisce alla lettura di dati che sono stati aggiunti da un'altra transazione. <\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/4f5e62205bac4b9422f6631f171ca11d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUn esempio pu\u00f2 essere l'osservazione di una selezione errata del prodotto pi\u00f9 economico in presenza di questa anomalia. <\/p>\n<p>Eliminare le letture fantasma \u00e8 piuttosto difficile. Una semplice blocco non \u00e8 sufficiente, poich\u00e9 non possiamo bloccare ci\u00f2 che non esiste ancora. I sistemi 2PL utilizzano il blocco predicativo, mentre i sistemi MVCC fanno s\u00ec che il pianificatore delle transazioni annulli le transazioni che potrebbero essere violate da un'inserzione. Entrambi i meccanismi sono piuttosto onerosi.<\/p>\n<h2>Read skew<\/h2>\n<p>\nIl read skew si verifica quando lavoriamo con pi\u00f9 tabelle i cui contenuti devono cambiare in modo coerente. <\/p>\n<p>Supponiamo di avere tabelle che rappresentano post e le loro meta-informazioni:<\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/e15440e44c41c0ac15d2c3349d1fae4e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nUna transazione legge dalle tabelle, un'altra le modifica:<\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/b89da5ae2d926ed0061cb90917d8a1ef.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA seguito dell'esecuzione della transazione T1, il post ha title = Buono, mentre updated_by = T2, cosa che rappresenta una certa incongruenza. <\/p>\n<p>In effetti, si tratta di una lettura non ripetibile, ma all'interno di pi\u00f9 tabelle.<\/p>\n<p>Per correggere, T1 pu\u00f2 applicare dei blocchi su tutte le righe che legger\u00e0, impedendo cos\u00ec alla transazione T2 di modificare le informazioni. Nel caso di MVCC, la transazione T2 verr\u00e0 annullata. La protezione da questa anomalia pu\u00f2 essere importante se utilizziamo dei cursori. <\/p>\n<h2>Scrittura scorretta<\/h2>\n<p>\nAnche questa anomalia \u00e8 pi\u00f9 facile da spiegare con un esempio: supponiamo che nel nostro sistema almeno un dottore debba essere di guardia, ma entrambi i dottori decidono di annullare il loro turno:<\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/7c6e4410224c3fcc9c564369535644e9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/8723c2dfe3e4b97ded601da2f89a77b1.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nL'anomalia ha portato al fatto che nessuno dei dottori andr\u00e0 di guardia. Come \u00e8 potuto accadere? Perch\u00e9 la transazione ha verificato una condizione che pu\u00f2 essere violata da un'altra transazione, e a causa dell'isolamento non abbiamo visto questa modifica.<\/p>\n<p>Questo \u00e8 lo stesso non-repeatable read. Come opzione, i select possono bloccare queste righe.<\/p>\n<p>Write skew e read skew sono combinazioni delle anomalia precedenti. Possiamo considerare write skew, che \u00e8 essenzialmente un phantom read. Consideriamo una tabella che contiene i nomi dei dipendenti, il loro stipendio e il progetto su cui stanno lavorando:<\/p>\n<p><img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/2953d6148d07ded9e1a3d67428b14e67.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Quali conseguenze pu\u00f2 avere l&#039;indebolimento del livello di isolamento delle transazioni nei database\" src=\"\/wp-content\/uploads\/2020\/05\/f77800e316708944aa32a9095ae6b132.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIn definitiva, abbiamo il seguente scenario: ogni manager pensava che la propria modifica non avrebbe portato a superare il budget, quindi hanno apportato cambiamenti nel personale che, nel complesso, hanno portato a un disavanzo. <\/p>\n<p>La causa del problema \u00e8 esattamente la stessa del lettura fantasma. <\/p>\n<h2>Conclusioni<\/h2>\n<p>\nL'abbassamento del livello di isolamento delle transazioni nel database \u00e8 un compromesso tra sicurezza e prestazioni, e la scelta di tale livello deve essere effettuata considerando i potenziali rischi per l'azienda in caso di anomalie.<\/p>\n<p>\n<noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/fyWh\/\">Scopri di pi\u00f9 sul corso.<br \/>\n<\/a><\/noindex><\/p>\n<p>Fonte: <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\/it\/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=\"it_IT\" \/>\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\/it\/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\udd47Cosa pu\u00f2 causare l'abbassamento del livello di isolamento delle transazioni nei database | ProHoster","description":"Ciao a tutti. Sono Vladislav Rodin. Attualmente sono il responsabile del corso \"Architetto di carichi elevati\" in OTUS e insegno anche corsi dedicati all'architettura del software. Oltre all'insegnamento, come avrete notato, scrivo anche materiale originale per il blog di OTUS su Habr, e voglio dedicare questo articolo al lancio del corso \"PostgreSQL\", che sta avvenendo proprio ora.","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/83337","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=83337"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/83337\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/83338"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=83337"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=83337"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=83337"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}