{"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\/hu\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","title":{"rendered":"A PostgreSQL \u00e9s a kapcsolat specifikus felv\u00e9teli konzisztenci\u00e1j\u00e1nak be\u00e1ll\u00edt\u00e1sai","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><em>Az \u00edr\u00e1s ford\u00edt\u00e1sa kifejezetten a kurzus hallgat\u00f3i sz\u00e1m\u00e1ra k\u00e9sz\u00fclt <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">Adatb\u00e1zisok<\/a><\/noindex>. \u00c9rdekel, hogy ezen a ter\u00fcleten fejl\u0151dj? Megh\u00edvunk a <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">Ny\u00edlt Napra<\/a><\/noindex>, ahol r\u00e9szletesen bemutatjuk a programot, az online form\u00e1tum jellemz\u0151it, a kompetenci\u00e1kat \u00e9s a karrierlehet\u0151s\u00e9geket, amelyek a v\u00e9gz\u0151s\u00f6ket v\u00e1rj\u00e1k a k\u00e9pz\u00e9s ut\u00e1n.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A PostgreSQL \u00e9s a kapcsolat specifikus felv\u00e9teli konzisztenci\u00e1j\u00e1nak be\u00e1ll\u00edt\u00e1sai\" src=\"\/wp-content\/uploads\/2019\/10\/e69e30ba059af157f021c9cb33a59f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A PostgreSQL \u00e9s a kapcsolat specifikus felv\u00e9teli konzisztenci\u00e1j\u00e1nak be\u00e1ll\u00edt\u00e1sai<br \/>\nA Compose-n\u00e1l sok adatb\u00e1zissal foglalkozunk, \u00e9s \u00e9ppen ez ad lehet\u0151s\u00e9get arra, hogy k\u00f6zelebbr\u0151l megismerj\u00fck a funkci\u00f3ikat \u00e9s h\u00e1tr\u00e1nyait. Ahogy elkezdj\u00fck megszeretni az \u00faj adatb\u00e1zisok funkcion\u00e1lis jellemz\u0151it, n\u00e9ha arra gondolunk, milyen j\u00f3 lenne, ha hasonl\u00f3 funkci\u00f3k lenn\u00e9nek m\u00e1r a r\u00e9gebbi eszk\u00f6z\u00f6kben is, amelyeket m\u00e1r r\u00e9g\u00f3ta haszn\u00e1lunk. Az egyik \u00faj jellemz\u0151, amelyet szerett\u00fcnk volna l\u00e1tni a PostgreSQL-ben, a kapcsolat szerint testreszabhat\u00f3 felv\u00e9teli konzisztencia az eg\u00e9sz klaszterben. \u00c9s kider\u00fclt, hogy m\u00e1r l\u00e9tezik, \u00e9s ma szeretn\u00e9nk megosztani \u00d6nnel, hogyan haszn\u00e1lhatja.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h1 id=\"zachem-mne-eto\">Mi\u00e9rt van sz\u00fcks\u00e9gem erre?<\/h1>\n<p><\/p>\n<p>A klaszter m\u0171k\u00f6d\u00e9se az alkalmaz\u00e1s\u00e1t\u00f3l f\u00fcgg. Vegy\u00fcnk p\u00e9ld\u00e1ul egy sz\u00e1mlafizet\u0151 alkalmaz\u00e1st. Itt sz\u00fcks\u00e9g van a 100%-os konzisztenci\u00e1ra a klaszterben, teh\u00e1t be kell kapcsolnia a szinkronra t\u00f6rt\u00e9n\u0151 elk\u00f6telezetts\u00e9get, hogy az adatb\u00e1zis v\u00e1rjon, am\u00edg minden v\u00e1ltoztat\u00e1st elv\u00e9geznek. Azonban, ha az alkalmaz\u00e1s egy gyorsan fejl\u0151d\u0151 k\u00f6z\u00f6ss\u00e9gi m\u00e9dia, akkor val\u00f3sz\u00edn\u0171leg a 100%-os konzisztenci\u00e1t\u00f3l gyors v\u00e1laszid\u0151t r\u00e9szes\u00edt el\u0151nyben. Ennek el\u00e9r\u00e9se \u00e9rdek\u00e9ben a klaszter\u00e9ben aszinkron elk\u00f6telezetts\u00e9geket haszn\u00e1lhat.<\/p>\n<p><\/p>\n<h2 id=\"znakomtes-kompromiss\">Ismerkedjen meg a kompromisszussal<\/h2>\n<p><\/p>\n<p>Kompromisszumot kell k\u00f6tnie az adatok konzisztenci\u00e1ja \u00e9s a teljes\u00edtm\u00e9ny k\u00f6z\u00f6tt. A PostgreSQL a konzisztenci\u00e1t r\u00e9szes\u00edti el\u0151nyben, mivel az alap\u00e9rtelmezett konfigur\u00e1ci\u00f3 \u00edgy kisz\u00e1m\u00edthat\u00f3 \u00e9s v\u00e1ratlan meglepet\u00e9sek n\u00e9lk\u00fcl m\u0171k\u00f6dik. Most ismerkedj\u00fcnk meg a kompromisszumokkal.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-1-proizvoditelnost\">Kompromisszum 1: Teljes\u00edtm\u00e9ny<\/h3>\n<p><\/p>\n<p>Ha a PostgreSQL klaszternek nincs sz\u00fcks\u00e9ge konzisztenci\u00e1ra, akkor teljesen aszinkron m\u00f3don is m\u0171k\u00f6dhet. A felv\u00e9tel a klaszter vezet\u0151j\u00e9re t\u00f6rt\u00e9nik, \u00e9s a replik\u00e1k n\u00e9h\u00e1ny milliszekundum ut\u00e1n kapj\u00e1k meg a friss\u00edt\u00e9seket. Amikor a PostgreSQL klaszternek sz\u00fcks\u00e9ge van a konzisztenci\u00e1ra, szinkron m\u00f3dban kell m\u0171k\u00f6dnie. A felv\u00e9tel a klaszter vezet\u0151j\u00e9re t\u00f6rt\u00e9nik, amely friss\u00edt\u00e9st k\u00fcld a replik\u00e1knak, \u00e9s megv\u00e1rja a visszaigazol\u00e1st arr\u00f3l, hogy minden replik\u00e1ban megt\u00f6rt\u00e9nt a felv\u00e9tel, miel\u0151tt visszaigazoln\u00e1 az \u00fcgyf\u00e9lnek, aki elind\u00edtotta a felv\u00e9telt, hogy az sikeresen megt\u00f6rt\u00e9nt. A k\u00e9t megk\u00f6zel\u00edt\u00e9s k\u00f6z\u00f6tti gyakorlati k\u00fcl\u00f6nbs\u00e9g az, hogy az aszinkron m\u00f3dszer k\u00e9t h\u00e1l\u00f3zati ugr\u00e1st ig\u00e9nyel, m\u00edg a szinkron n\u00e9gyet. <\/p>\n<p><\/p>\n<h3 id=\"kompromiss-2-soglasovannost\">Kompromisszum 2: Konzisztencia<\/h3>\n<p><\/p>\n<p>A vezet\u0151 meghib\u00e1sod\u00e1sa eset\u00e9n a k\u00e9t megk\u00f6zel\u00edt\u00e9s kimenetele is elt\u00e9r\u0151 lesz. Ha a munka aszinkron m\u00f3don folyik, akkor egy ilyen hiba eset\u00e9n nem minden felv\u00e9tel ker\u00fcl r\u00f6gz\u00edt\u00e9sre a replik\u00e1kban. H\u00e1ny adatok fognak elveszni? Ez az alkalmaz\u00e1st\u00f3l \u00e9s a replik\u00e1l\u00e1s hat\u00e9konys\u00e1g\u00e1t\u00f3l f\u00fcgg. A Compose replik\u00e1l\u00e1s megakad\u00e1lyozza, hogy a replika vezet\u0151v\u00e9 v\u00e1ljon, ha az adatmennyis\u00e9ge 1 Mb-mal kevesebb, mint a vezet\u0151\u00e9, azaz potenci\u00e1lisan legfeljebb 1 Mb felv\u00e9tel veszhet el aszinkron m\u0171k\u00f6d\u00e9s eset\u00e9n. <\/p>\n<p><\/p>\n<p>Szinkron \u00fczemm\u00f3dban ez nem t\u00f6rt\u00e9nik meg. Ha a vezet\u0151 hib\u00e1sodik, akkor minden replik\u00e1t friss\u00edtenek, mivel b\u00e1rmely felv\u00e9tel, amelyet a vezet\u0151 meger\u0151s\u00edtett, a replik\u00e1kban is meger\u0151s\u00edt\u00e9st kell, hogy kapjon. \u00cdme a konzisztencia. <\/p>\n<p><\/p>\n<p>A szinkron viselked\u00e9snek \u00e9rtelme van, ha sz\u00e1mlafizet\u00e9si alkalmaz\u00e1sban haszn\u00e1lj\u00e1k, ahol a konzisztenci\u00e1nak nyilv\u00e1nval\u00f3 el\u0151nye van a konzisztencia \u00e9s a teljes\u00edtm\u00e9ny k\u00f6z\u00f6tti kompromisszumban. A legfontosabb egy ilyen alkalmaz\u00e1s sz\u00e1m\u00e1ra az \u00e9rv\u00e9nyes adatok. Most gondoljon egy k\u00f6z\u00f6ss\u00e9gi h\u00e1l\u00f3ra, ahol a f\u0151 feladat a felhaszn\u00e1l\u00f3 figyelm\u00e9nek fenntart\u00e1sa, min\u00e9l gyorsabb v\u00e1laszokkal. Ilyen esetben a teljes\u00edtm\u00e9ny, kevesebb h\u00e1l\u00f3zati ugr\u00e1ssal \u00e9s kevesebb v\u00e1rakoz\u00e1ssal a k\u00f6telezetts\u00e9gv\u00e1llal\u00e1sokra, priorit\u00e1st \u00e9lvez. Azonban a teljes\u00edtm\u00e9ny \u00e9s a konzisztencia k\u00f6z\u00f6tti kompromisszum nem az egyetlen, amire gondolni kell.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-3-sboi\">Kompromisszum 3: Meghib\u00e1sod\u00e1sok<\/h3>\n<p><\/p>\n<p>Nagyon fontos meg\u00e9rteni, hogyan viselkedik a klaszter hiba eset\u00e9n. N\u00e9zz\u00fck meg azt a helyzetet, amikor egy vagy t\u00f6bb replik\u00e1ci\u00f3 le\u00e1ll. Amikor a commitok aszinkron m\u00f3don vannak feldolgozva, a vezet\u0151 folytatja a m\u0171k\u00f6d\u00e9st, azaz fogadja \u00e9s feldolgozza a bejegyz\u00e9seket an\u00e9lk\u00fcl, hogy v\u00e1rna a hi\u00e1nyz\u00f3 replik\u00e1kra. Amikor a replik\u00e1k visszat\u00e9rnek a klaszterbe, utol\u00e9rik a vezet\u0151t. Szinkron replik\u00e1ci\u00f3 eset\u00e9n, ha a replik\u00e1k nem v\u00e1laszolnak, a vezet\u0151nek nem lesz v\u00e1laszt\u00e1sa, \u00e9s folytatnia kell a commit meger\u0151s\u00edt\u00e9s\u00e9nek v\u00e1rakoz\u00e1s\u00e1t, am\u00edg a replik\u00e1ci\u00f3 vissza nem t\u00e9r a klaszterbe, \u00e9s nem tudja elfogadni \u00e9s meger\u0151s\u00edteni a bejegyz\u00e9st.<\/p>\n<p><\/p>\n<h2 id=\"po-odnomu-soedineniyu-na-tranzakciyu\">Egy kapcsolat tranzakci\u00f3nk\u00e9nt?<\/h2>\n<p><\/p>\n<p>Minden alkalmaz\u00e1snak k\u00fcl\u00f6nf\u00e9le \u00f6sszefon\u00f3d\u00e1si \u00e9s teljes\u00edtm\u00e9nybeli kombin\u00e1ci\u00f3ra van sz\u00fcks\u00e9ge. Ha persze nem a sz\u00e1ml\u00e1k kifizet\u00e9s\u00e9re szolg\u00e1l\u00f3 alkalmaz\u00e1sunkr\u00f3l van sz\u00f3, amelyet teljesen konzisztensnek k\u00e9pzel\u00fcnk el, vagy pedig a szinte efemer k\u00f6z\u00f6ss\u00e9gi m\u00e9diaalkalmaz\u00e1sunkr\u00f3l. Minden m\u00e1s esetben lesznek olyan pillanatok, amikor bizonyos m\u0171veleteknek szinkronosnak, m\u00edg m\u00e1soknak aszinkronosnak kell lenni\u00fck. Lehet, hogy nem szeretn\u00e9, ha a rendszer megv\u00e1rja, am\u00edg egy cseveg\u00e9sbe k\u00fcld\u00f6tt \u00fczenetet elmentenek, de ha ugyanebben az alkalmaz\u00e1sban folyik egy kifizet\u00e9s, akkor v\u00e1rni kell.<\/p>\n<p><\/p>\n<p>Mindezeket a d\u00f6nt\u00e9seket term\u00e9szetesen az alkalmaz\u00e1s fejleszt\u0151je hozza meg. A helyes d\u00f6nt\u00e9sek arr\u00f3l, hogy mikor alkalmazzanak egy vagy m\u00e1sik megk\u00f6zel\u00edt\u00e9st, seg\u00edtenek a klaszter maxim\u00e1lis kihaszn\u00e1l\u00e1s\u00e1ban. Fontos, hogy a fejleszt\u0151 k\u00e9pes legyen v\u00e1ltani k\u00f6z\u00f6tt\u00fck SQL szinten a kapcsolatok \u00e9s tranzakci\u00f3k eset\u00e9n. <\/p>\n<p><\/p>\n<h2 id=\"obespechenie-kontrolya-na-praktike\">A gyakorlatban biztos\u00edtva a kontrollt<\/h2>\n<p><\/p>\n<p>Alap\u00e9rtelmez\u00e9s szerint a PostgreSQL biztos\u00edtja a konzisztenci\u00e1t. Ez a szerverparam\u00e9ter \u00e1ltal kontroll\u00e1lt <code>synchronous_commit<\/code>. Alap\u00e9rtelmez\u00e9s szerint ez az <code>on<\/code>, de h\u00e1rom m\u00e1sik lehet\u0151s\u00e9ge van: <code>local<\/code>, <code>remote_write<\/code> vagy <code>off<\/code>.<\/p>\n<p><\/p>\n<p>Ha a param\u00e9tert a <code>off<\/code> \u00e9rt\u00e9kre \u00e1ll\u00edtjuk, akkor minden szinkron commit le\u00e1ll, m\u00e9g a helyi rendszerben is. A local param\u00e9ter meghat\u00e1rozza a szinkron m\u00f3dot a helyi rendszerben, de a replik\u00e1kba t\u00f6rt\u00e9n\u0151 bejegyz\u00e9sek aszinkron m\u00f3don t\u00f6rt\u00e9nnek. <code>A remote_write<\/code> m\u00e9g tov\u00e1bb megy: a replik\u00e1kba t\u00f6rt\u00e9n\u0151 bejegyz\u00e9sek aszinkron m\u00f3don t\u00f6rt\u00e9nnek, de a replik\u00e1k v\u00e1laszolnak, amikor a replik\u00e1ci\u00f3 elfogadta a bejegyz\u00e9st, de m\u00e9g nem mentette azt le a lemezre.<\/p>\n<p><\/p>\n<p>A rendelkez\u00e9sre \u00e1ll\u00f3 opci\u00f3k figyelembev\u00e9tel\u00e9vel kiv\u00e1lasztjuk a viselked\u00e9st, \u00e9s eml\u00e9kezve arra, hogy <code>on<\/code> \u2013 ez szinkron bejegyz\u00e9seket jelent, v\u00e1lasztunk <code>local<\/code> az aszinkron commitokhoz a h\u00e1l\u00f3zaton, m\u00edg a helyi commitokat szinkronosnak hagyjuk.<\/p>\n<p><\/p>\n<p>Most m\u00e1r elmondjuk, hogyan \u00e1ll\u00edthatja be ezt egy pillanat alatt, de k\u00e9pzelje el, hogy telep\u00edtett\u00fck <code>synchronous_commit<\/code> be. <code>local<\/code> a szerverre. Felmer\u00fclt benn\u00fcnk a k\u00e9rd\u00e9s, hogy m\u00f3dos\u00edthat\u00f3-e a param\u00e9ter <code>synchronous_commit<\/code> folyamatban, \u00e9s kider\u00fclt, hogy nemcsak lehets\u00e9ges, hanem r\u00e1ad\u00e1sul k\u00e9t m\u00f3dja is van. Az els\u0151 az, hogy a kapcsolat\u00e1nak session-j\u00e9t a k\u00f6vetkez\u0151k\u00e9ppen \u00e1ll\u00edtja be:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">SET SESSION synchronous_commit TO ON;  \n\/\/ Itt vannak a \u00edr\u00e1sok<\/code><\/pre>\n<p><\/p>\n<p>A k\u00e9s\u0151bbi \u00edr\u00e1sok a session-ben meger\u0151s\u00edtik az \u00edr\u00e1si m\u0171veleteket a replik\u00e1k sz\u00e1m\u00e1ra, miel\u0151tt pozit\u00edv eredm\u00e9nyt adna a csatlakoztatott kliensnek. Ha persze nem m\u00f3dos\u00edtja \u00fajra a be\u00e1ll\u00edt\u00e1st <code>synchronous_commit<\/code> Lehet, hogy elhagyja a <code>SESSION<\/code> r\u00e9sz\u00e9t a parancsban, mivel az alap\u00e9rtelmezett \u00e9rt\u00e9kre fog \u00e1llni.<\/p>\n<p><\/p>\n<p>A m\u00e1sodik m\u00f3dszer akkor j\u00f3, amikor csak arra szeretne biztos\u00edtani, hogy szinkron replik\u00e1ci\u00f3t kap egy tranzakci\u00f3hoz. Sok \"NoSQL\" adatb\u00e1zisban nem l\u00e9tezik tranzakci\u00f3k fogalma, de a PostgreSQL-ben igen. Ebben az esetben elind\u00edtja a tranzakci\u00f3t, majd be\u00e1ll\u00edtja <code>synchronous_commit<\/code> be. <code>on<\/code> a tranzakci\u00f3 \u00edr\u00e1s\u00e1nak v\u00e9grehajt\u00e1sa el\u0151tt. <code>COMMIT<\/code> meger\u0151s\u00edti a tranzakci\u00f3t, b\u00e1rmilyen param\u00e9ter \u00e9rt\u00e9k\u00e9t haszn\u00e1lva, <code>synchronous_commit<\/code>ami abban a pillanatban volt be\u00e1ll\u00edtva, b\u00e1r a legjobb el\u0151re be\u00e1ll\u00edtani a v\u00e1ltoz\u00f3t, hogy megbizonyosodjon arr\u00f3l, hogy a t\u00f6bbi fejleszt\u0151 \u00e9rtse, hogy az \u00edr\u00e1sok nem aszinkronok.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">BEGIN;  \nSET LOCAL synchronous_commit TO ON;  \n\/\/ Itt vannak a \u00edr\u00e1sok\nCOMMIT;  <\/code><\/pre>\n<p><\/p>\n<p>Mostant\u00f3l a tranzakci\u00f3k minden meger\u0151s\u00edt\u00e9se, mint ahogy a replik\u00e1kba \u00edrt\u00e1k, azt megel\u0151zi, hogy az adatb\u00e1zis pozit\u00edv v\u00e1laszt adjon a csatlakoztatott kliensnek.<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-postgresql\">PostgreSQL be\u00e1ll\u00edt\u00e1sa<\/h2>\n<p><\/p>\n<p>Ezid\u00e1ig elk\u00e9pzelt\u00fck a PostgreSQL rendszert, amelynek <code>synchronous_commit<\/code>, telep\u00edtve van <code>local<\/code>. Ahhoz, hogy ez a szerveroldalon val\u00f3s\u00e1gg\u00e1 v\u00e1ljon, k\u00e9t konfigur\u00e1ci\u00f3s param\u00e9tert kell be\u00e1ll\u00edtania. Egy m\u00e1sik param\u00e9ter <code>synchronous_standby_names<\/code> akkor l\u00e9p \u00e9rv\u00e9nybe, amikor <code>synchronous_commit<\/code> lesz a <code>on<\/code>. Meghat\u00e1rozza, hogy mely replik\u00e1k jogosultak a szinkron commitokra, \u00e9s be fogjuk \u00e1ll\u00edtani <code>*<\/code>, ami azt jelenti, hogy az \u00f6sszes replik\u00e1t aktiv\u00e1lni fogja. Ezeket az \u00e9rt\u00e9keket \u00e1ltal\u00e1ban a <noindex><a rel=\"nofollow\" href=\"http:\/\/www.postgresql.org\/docs\/9.4\/static\/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE\">konfigur\u00e1ci\u00f3s f\u00e1jlban<\/a><\/noindex> a k\u00f6vetkez\u0151 hozz\u00e1ad\u00e1s\u00e1val \u00e1ll\u00edtj\u00e1k be: <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">synchronous_commit = local  \nsynchronous_standby_names='*'<\/code><\/pre>\n<p><\/p>\n<p>A <code>synchronous_commit<\/code> az \u00e9rt\u00e9kre <code>local<\/code>param\u00e9ter be\u00e1ll\u00edt\u00e1s\u00e1val egy olyan rendszert hozunk l\u00e9tre, amelyben a helyi lemezek szinkronban maradnak, de a h\u00e1l\u00f3zati replik\u00e1k commitjai alap\u00e9rtelmez\u00e9s szerint aszinkronok. Ha persze nem d\u00f6nt\u00fcnk \u00fagy, hogy ezek a commitok szinkronok legyenek, ahogy fentebb bemutattuk.<\/p>\n<p><\/p>\n<p>Ha k\u00f6vette a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/compose\/governor\">Governor projekt fejl\u0151d\u00e9s\u00e9t<\/a><\/noindex>, \u00e9szrevehett\u00e9k az ut\u00f3bbi id\u0151ben t\u00f6rt\u00e9nt v\u00e1ltoz\u00e1sokat (<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>), amelyek lehet\u0151v\u00e9 tett\u00e9k a Governor felhaszn\u00e1l\u00f3i sz\u00e1m\u00e1ra, hogy tesztelj\u00e9k ezeket a param\u00e9tereket \u00e9s ellen\u0151rizz\u00e9k azok konzisztenci\u00e1j\u00e1t.<\/p>\n<p><\/p>\n<h2 id=\"esche-para-slov\">M\u00e9g n\u00e9h\u00e1ny sz\u00f3...<\/h2>\n<p><\/p>\n<p>M\u00e9g egy h\u00e9ttel ezel\u0151tt azt mondtam volna, hogy lehetetlen ilyen r\u00e9szletess\u00e9ggel konfigur\u00e1lni a PostgreSQL-t. Ekkor Kurt, a Compose platformcsapat\u00e1nak tagja, ragaszkodott ahhoz, hogy erre van lehet\u0151s\u00e9g. Megnyugtatta az ellen\u00e9rveimet, \u00e9s megtal\u00e1lta a PostgreSQL dokument\u00e1ci\u00f3ban <noindex><a rel=\"nofollow\" href=\"http:\/\/www.postgresql.org\/docs\/devel\/static\/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT\">a k\u00f6vetkez\u0151t<\/a><\/noindex>:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"A PostgreSQL \u00e9s a kapcsolat specifikus felv\u00e9teli konzisztenci\u00e1j\u00e1nak be\u00e1ll\u00edt\u00e1sai\" src=\"\/wp-content\/uploads\/2019\/10\/e77e97e588fa3d1e8acbe5de0e26436a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Ez a param\u00e9ter b\u00e1rmikor megv\u00e1ltoztathat\u00f3. B\u00e1rmely tranzakci\u00f3 viselked\u00e9s\u00e9t a commit sor\u00e1n \u00e9rv\u00e9nyes be\u00e1ll\u00edt\u00e1s hat\u00e1rozza meg. Ez\u00e9rt lehets\u00e9ges \u00e9s hasznos, hogy bizonyos tranzakci\u00f3k commitjai szinkron m\u00f3don, m\u00e1sok pedig aszinkron m\u00f3don t\u00f6rt\u00e9njenek. P\u00e9ld\u00e1ul, hogy egy <code>multistatement<\/code> tranzakci\u00f3 aszinkron commitot v\u00e9gezzen, amikor az alap\u00e9rtelmezett param\u00e9ter \u00e9rt\u00e9ke \u00e9ppen az ellenkez\u0151je, \u00e1ll\u00edtsa be a <\/em><code>SET LOCAL synchronous_commit TO OFF<\/code> <em>tov\u00e1bbi tranzakci\u00f3n bel\u00fcl.<\/em><\/p>\n<p><\/p>\n<p>Egy ilyen apr\u00f3 m\u00f3dos\u00edt\u00e1ssal a konfigur\u00e1ci\u00f3s f\u00e1jlban lehet\u0151v\u00e9 tett\u00fck a felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra, hogy ellen\u0151rizz\u00e9k konzisztenci\u00e1jukat \u00e9s teljes\u00edtm\u00e9ny\u00fcket.<\/p>\n<p>Forr\u00e1s: <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.3 - 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\/hu\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\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\/hu\/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 \u00e9s az \u00edr\u00e1s konzisztenci\u00e1j\u00e1nak be\u00e1ll\u00edt\u00e1sai minden egyes konkr\u00e9t kapcsolatra | ProHoster","description":"A cikk ford\u00edt\u00e1s\u00e1t kifejezetten az \u201eAdatb\u00e1zisok\u201d kurzus hallgat\u00f3i sz\u00e1m\u00e1ra k\u00e9sz\u00edtett\u00fck. \u00c9rdekel az adott ter\u00fcleten val\u00f3 fejl\u0151d\u00e9s?","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","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\/hu\/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\/hu\/wp-json\/wp\/v2\/posts\/39169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=39169"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/39169\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/29395"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=39169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=39169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=39169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}