{"id":39169,"date":"2019-10-31T22:28:14","date_gmt":"2019-10-31T19:28:14","guid":{"rendered":"https:\/\/prohoster.info\/blog\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya\/"},"modified":"2019-10-31T22:28:14","modified_gmt":"2019-10-31T19:28:14","slug":"postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","title":{"rendered":"PostgreSQL e impostazioni di coerenza della scrittura per ciascuna connessione specifica","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><em>Traduzione dell'articolo preparata appositamente per gli studenti del corso <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">\u00abBasi di Dati\u00bb<\/a><\/noindex>. Ti interessa svilupparti in questo campo? Ti invitiamo a <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">Giornata di Porte Aperte<\/a><\/noindex>, dove parleremo dettagliatamente del programma, delle caratteristiche del formato online, delle competenze e delle prospettive di carriera che attendono i laureati dopo il corso.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL e impostazioni di coerenza della scrittura per ciascuna connessione specifica\" src=\"\/wp-content\/uploads\/2019\/10\/e69e30ba059af157f021c9cb33a59f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>PostgreSQL e impostazioni di coerenza della scrittura per ciascuna connessione specifica<br \/>\nNoi di Compose abbiamo a che fare con molte basi di dati, e proprio questo ci d\u00e0 l'opportunit\u00e0 di approfondire la loro funzionalit\u00e0 e i loro limiti. Man mano che impariamo ad apprezzare le caratteristiche funzionali delle nuove basi di dati, a volte iniziamo a pensare a come sarebbe bello se tali funzioni fossero presenti anche negli strumenti pi\u00f9 maturi con cui lavoriamo da tempo. Una delle nuove funzionalit\u00e0 che avremmo voluto vedere in PostgreSQL era la coerenza scritturale configurabile per connessione in tutto il cluster. E, a quanto pare, ce l'abbiamo gi\u00e0, e oggi vogliamo condividere con te informazioni su come puoi utilizzarla.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h1 id=\"zachem-mne-eto\">A cosa mi serve?<\/h1>\n<p><\/p>\n<p>Il modo in cui deve comportarsi un cluster dipende dalla tua applicazione. Prendiamo, ad esempio, un'applicazione per il pagamento delle bollette. Avrai bisogno di coerenza totale nel cluster, quindi dovrai abilitare i commit sincronizzati affinch\u00e9 il tuo database attenda l'applicazione di tutte le modifiche. Tuttavia, se la tua applicazione \u00e8 un social network in rapida evoluzione, probabilmente preferirai una risposta rapida rispetto alla coerenza totale. Per raggiungere questo obiettivo, puoi utilizzare nel tuo cluster commit asincroni.<\/p>\n<p><\/p>\n<h2 id=\"znakomtes-kompromiss\">Ecco il compromesso<\/h2>\n<p><\/p>\n<p>Dovrai scendere a compromessi tra la coerenza dei dati e le prestazioni. PostgreSQL tende verso la coerenza, poich\u00e9 la configurazione predefinita risulta cos\u00ec prevedibile, senza sorprese inaspettate. E ora iniziamo a esplorare questi compromessi.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-1-proizvoditelnost\">Compromesso 1: Prestazioni<\/h3>\n<p><\/p>\n<p>Se al cluster PostgreSQL non \u00e8 richiesta coerenza, pu\u00f2 tranquillamente operare in modo asincrono. La scrittura avviene sul leader del cluster e le sue repliche riceveranno gli aggiornamenti dopo alcuni millisecondi. Quando al cluster PostgreSQL \u00e8 richiesta coerenza, deve operare in modo sincrono. La scrittura sar\u00e0 eseguita sul leader del cluster, che invier\u00e0 l'aggiornamento alle repliche e attender\u00e0 una conferma che ognuna di esse ha registrato l'operazione, prima di inviare la conferma al cliente che ha avviato la scrittura, informandolo che l'operazione \u00e8 andata a buon fine. La differenza pratica tra questi approcci \u00e8 che il metodo asincrono richiede due salti di rete, mentre il sincrono ne richiede quattro. <\/p>\n<p><\/p>\n<h3 id=\"kompromiss-2-soglasovannost\">Compromesso 2: Coerenza<\/h3>\n<p><\/p>\n<p>Il risultato in caso di guasto del leader in questi due approcci sar\u00e0 diverso. Se l'operazione \u00e8 eseguita in modo asincrono, in caso di errore, non tutte le scritture saranno registrate dalle repliche. Quanto sar\u00e0 perso? Dipende dall'applicazione stessa e dall'efficacia della replicazione. La replicazione di Compose impedir\u00e0 alla replica di diventare leader nel caso in cui la quantit\u00e0 di informazioni in essa sia inferiore di 1 MB rispetto al leader, il che significa che potrebbero andare perse fino a 1 MB di scritture durante l'operativit\u00e0 asincrona. <\/p>\n<p><\/p>\n<p>In modalit\u00e0 sincrona questo non accade. Se il leader fallisce, tutte le repliche vengono aggiornate, poich\u00e9 ogni scrittura confermata dal leader deve essere confermata anche nelle repliche. Ecco qua: coerenza. <\/p>\n<p><\/p>\n<p>Il comportamento sincrono ha senso utilizzarlo in un'applicazione per la gestione dei pagamenti, dove la coerenza ha un chiaro vantaggio nel cercare un compromesso tra coerenza e prestazioni. La cosa pi\u00f9 importante per un'applicazione di questo tipo sono i dati validi. Ora, pensate a un social network, dove l'obiettivo principale \u00e8 mantenere l'attenzione dell'utente, rispondendo alle richieste il pi\u00f9 rapidamente possibile. In tal caso, le prestazioni con un numero inferiore di salti di rete e un'attesa minore per i commit avranno la priorit\u00e0. Tuttavia, il compromesso tra prestazioni e coerenza non \u00e8 l'unico di cui tenere conto.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-3-sboi\">Compromesso 3: Guasti<\/h3>\n<p><\/p>\n<p>\u00c8 molto importante capire come si comporta un cluster durante un guasto. Consideriamo la situazione in cui una o pi\u00f9 repliche si guastano. Quando i commit vengono elaborati in modo asincrono, il leader continua a funzionare, cio\u00e8 accetta ed elabora le scritture senza aspettare le repliche mancanti. Quando le repliche tornano nel cluster, raggiungono il leader. Con la replicazione sincronizzata, se le repliche non rispondono, il leader non avr\u00e0 scelta e continuer\u00e0 a aspettare la conferma del commit finch\u00e9 la replica non torner\u00e0 nel cluster e non potr\u00e0 accettare e confermare la scrittura.<\/p>\n<p><\/p>\n<h2 id=\"po-odnomu-soedineniyu-na-tranzakciyu\">Una connessione per transazione?<\/h2>\n<p><\/p>\n<p>Ogni applicazione ha bisogno di un tipo speciale di combinazione tra coerenza e prestazioni. A meno che non si tratti ovviamente della nostra applicazione per il pagamento delle fatture, che immaginiamo essere completamente coerente, o della nostra applicazione per social network quasi effimera. In tutti gli altri casi ci saranno momenti in cui alcune operazioni devono essere sincronizzate e altre asincrone. Potresti non volere che il sistema aspetti che un messaggio inviato in chat venga confermato, ma se in quella stessa applicazione avviene un pagamento, allora dovrai aspettare.<\/p>\n<p><\/p>\n<p>Tutte queste decisioni, ovviamente, ricadono sullo sviluppatore dell'applicazione. Le giuste decisioni su quando applicare un approccio piuttosto che un altro aiuteranno a ottenere il massimo dal cluster. \u00c8 importante che lo sviluppatore possa alternare tra di essi a livello di SQL per le connessioni e per le transazioni. <\/p>\n<p><\/p>\n<h2 id=\"obespechenie-kontrolya-na-praktike\">Garantire il controllo nella pratica<\/h2>\n<p><\/p>\n<p>Per impostazione predefinita, PostgreSQL garantisce coerenza. Questo \u00e8 controllato dal parametro del server <code>synchronous_commit<\/code>. Per impostazione predefinita \u00e8 impostato su <code>on<\/code>, ma ha altre tre opzioni: <code>local<\/code>, <code>remote_write<\/code> o <code>off<\/code>.<\/p>\n<p><\/p>\n<p>Se il parametro \u00e8 impostato su <code>off<\/code> , tutti i commit sincronizzati vengono interrotti, anche nella sistema locale. Il parametro in local definisce la modalit\u00e0 sincronizzata per il sistema locale, ma le scritture sulle repliche avvengono in modo asincrono. <code>Remote_write<\/code> va ancora oltre: le scritture sulle repliche avvengono in modo asincrono, ma vengono restituite quando la replica ha accettato la scrittura, ma non l'ha ancora registrata su disco.<\/p>\n<p><\/p>\n<p>Considerando l'attuale gamma di opzioni, scegliamo il comportamento e, tenendo presente che <code>on<\/code> \u2013 sono scritture sincrone, sceglieremo <code>local<\/code> per i commit asincroni sulla rete, lasciando i commit locali sincronizzati.<\/p>\n<p><\/p>\n<p>Ora vi spiegheremo come configurarlo in un attimo, ma immaginate che abbiamo installato <code>synchronous_commit<\/code> in <code>local<\/code> per il server. Ci siamo chiesti se fosse possibile modificare il parametro <code>synchronous_commit<\/code> al volo, e si \u00e8 scoperto che non solo \u00e8 possibile, ma ci sono addirittura due modi per farlo. Il primo \u00e8 impostare la sessione della vostra connessione nel seguente modo:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">SET SESSION synchronous_commit TO ON;  \n\/\/ Le vostre scritture vanno qui<\/code><\/pre>\n<p><\/p>\n<p>Tutte le scritture successive nella sessione confermeranno le operazioni di scrittura per le repliche, prima di restituire un risultato positivo al client connesso. A meno che, naturalmente, non cambiate di nuovo l'impostazione. <code>synchronous_commit<\/code> \u00c8 possibile omettere la parte <code>SESSION<\/code> nel comando, poich\u00e9 sar\u00e0 impostata sul valore predefinito.<\/p>\n<p><\/p>\n<p>Il secondo metodo \u00e8 utile quando vuoi semplicemente assicurarti di ottenere una replica sincrona per una singola transazione. In molti database di tipo 'NoSQL' non esiste il concetto di transazioni, ma questo \u00e8 presente in PostgreSQL. In tal caso, avvii una transazione e poi imposti <code>synchronous_commit<\/code> in <code>on<\/code> prima di eseguire la scrittura per la transazione. <code>COMMIT<\/code> confermer\u00e0 la transazione, utilizzando qualsiasi valore del parametro <code>synchronous_commit<\/code>, che \u00e8 stato impostato in quel momento, anche se \u00e8 meglio impostare la variabile in anticipo, in modo che gli altri sviluppatori comprendano che le scritture non sono asincrone.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">BEGIN;  \nSET LOCAL synchronous_commit TO ON;  \n\/\/ Le vostre scritture vanno qui\nCOMMIT;  <\/code><\/pre>\n<p><\/p>\n<p>Ora tutti i commit delle transazioni saranno confermati, come scritti nelle repliche, ancor prima che il database restituisca una risposta positiva al client connesso.<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-postgresql\">Configurazione di PostgreSQL<\/h2>\n<p><\/p>\n<p>Prima di questo, immaginavamo un sistema PostgreSQL con <code>synchronous_commit<\/code>, impostato su <code>local<\/code>. Affinch\u00e9 questo sia reale sul lato server, sar\u00e0 necessario impostare due parametri di configurazione del server. Un altro parametro <code>synchronous_standby_names<\/code> entrer\u00e0 in gioco quando <code>synchronous_commit<\/code> sar\u00e0 in <code>on<\/code>. Esso definisce quali repliche hanno diritto a commit sincroni, e lo imposteremo su <code>*<\/code>, il che significher\u00e0 coinvolgere tutte le repliche. Questi valori vengono generalmente configurati in <noindex><a rel=\"nofollow\" href=\"http:\/\/www.postgresql.org\/docs\/9.4\/static\/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE\">file di configurazione<\/a><\/noindex> aggiungendo: <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">synchronous_commit = local  \nsynchronous_standby_names='*'<\/code><\/pre>\n<p><\/p>\n<p>Impostando il parametro <code>synchronous_commit<\/code> a valore <code>local<\/code>, stiamo creando un sistema in cui i dischi locali rimangono sincroni, ma i commit delle repliche di rete sono di default asincroni. A meno che, naturalmente, non decidiamo di rendere questi commit sincroni, come mostrato sopra.<\/p>\n<p><\/p>\n<p>Se avete seguito l'evoluzione <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/compose\/governor\">del progetto Governor<\/a><\/noindex>, potreste aver notato alcuni cambiamenti recenti (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/compose\/governor\/commit\/87f18c01f150b3f1b6f948e852c7add2949f7360\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/compose\/governor\/commit\/dcbe849d33c535b1522ce767803cb77a3ac91a7e\">2<\/a><\/noindex>), che hanno permesso agli utenti di Governor di testare queste impostazioni e di controllarne la coerenza.<\/p>\n<p><\/p>\n<h2 id=\"esche-para-slov\">Altre due parole\u2026<\/h2>\n<p><\/p>\n<p>Letteralmente una settimana fa, ti avrei detto che era impossibile ottimizzare cos\u00ec finemente PostgreSQL. \u00c8 stato allora che Kurt, un membro del team della piattaforma Compose, ha insistito sul fatto che esisteva questa possibilit\u00e0. Ha placato le mie obiezioni e ha trovato nella documentazione di PostgreSQL <noindex><a rel=\"nofollow\" href=\"http:\/\/www.postgresql.org\/docs\/devel\/static\/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT\">quanto segue<\/a><\/noindex>:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL e impostazioni di coerenza della scrittura per ciascuna connessione specifica\" src=\"\/wp-content\/uploads\/2019\/10\/e77e97e588fa3d1e8acbe5de0e26436a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Questo parametro pu\u00f2 essere modificato in qualsiasi momento. Il comportamento di ogni transazione \u00e8 determinato dall'impostazione attiva al momento del commit. Pertanto, \u00e8 possibile e utile che per alcune transazioni i commit avvengano in modo sincrono, mentre per altre in modo asincrono. Ad esempio, per costringere una <code>multistatement<\/code> transazione a eseguire commit in modo asincrono, quando il valore predefinito \u00e8 l'opposto, impostare <\/em><code>SET LOCAL synchronous_commit TO OFF<\/code> <em>nella transazione.<\/em><\/p>\n<p><\/p>\n<p>Con una piccola modifica al file di configurazione, abbiamo dato agli utenti la possibilit\u00e0 di controllare la loro coerenza e prestazioni.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/472364\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\u00bb. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438? \u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0435\u043c \u0432\u0430\u0441 \u043d\u0430 \u0414\u0435\u043d\u044c \u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0414\u0432\u0435\u0440\u0435\u0439, \u0433\u0434\u0435 \u043c\u044b \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445 \u043e\u043d\u043b\u0430\u0439\u043d-\u0444\u043e\u0440\u043c\u0430\u0442\u0430, \u043a\u043e\u043c\u043f\u0435\u0442\u0435\u043d\u0446\u0438\u044f\u0445 \u0438 \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u044b\u0445 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u0432\u044b\u043f\u0443\u0441\u043a\u043d\u0438\u043a\u043e\u0432 \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u041d\u0430\u043c \u0432 Compose \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441\u043e \u043c\u043d\u043e\u0433\u0438\u043c\u0438 \u0431\u0430\u0437\u0430\u043c\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29395,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-39169","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=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\u00bb. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438?\" \/>\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\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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\udd47PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\u00bb. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438?\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya\" \/>\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=\"2019-10-31T19:28:14+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:28:14+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\udd47PostgreSQL e impostazioni di coerenza della scrittura per ogni singola connessione | ProHoster","description":"La traduzione dell'articolo \u00e8 stata preparata specificamente per gli studenti del corso \"Database\". Sei interessato a svilupparti in questa direzione?","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","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\udd47PostgreSQL \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0432\u043e\u0434 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043b\u0435\u043d \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u0441\u0442\u0443\u0434\u0435\u043d\u0442\u043e\u0432 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0411\u0430\u0437\u044b \u0414\u0430\u043d\u043d\u044b\u0445\u00bb. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438?","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","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":"2019-10-31T19:28:14+00:00","article:modified_time":"2019-10-31T19:28:14+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"39169","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":"2026-01-24 01:05:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:54:44","updated":"2026-01-24 01:05:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/39169","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=39169"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/39169\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/29395"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=39169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=39169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=39169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}