{"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\/sq\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","title":{"rendered":"PostgreSQL dhe konfigurimi i konsistenc\u00ebs s\u00eb shkrimit p\u00ebr \u00e7do lidhje t\u00eb ve\u00e7ant\u00eb","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><em>P\u00ebrkthimi i artikullit \u00ebsht\u00eb p\u00ebrgatitur posa\u00e7\u00ebrisht p\u00ebr student\u00ebt e kursit <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">\u00abBaza t\u00eb Dh\u00ebnash\u00bb<\/a><\/noindex>. A jeni t\u00eb interesuar t\u00eb zhvilloni k\u00ebt\u00eb drejtim? Ju ftojm\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">Dit\u00ebn e Hapjes<\/a><\/noindex>, ku ne do t\u00eb flasim n\u00eb detaje p\u00ebr programin, ve\u00e7orit\u00eb e formatit online, kompetencat dhe perspektivat e karrier\u00ebs q\u00eb presin diplomant\u00ebt pas p\u00ebrfundimit t\u00eb studimeve.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL dhe konfigurimi i konsistenc\u00ebs s\u00eb shkrimit p\u00ebr \u00e7do lidhje t\u00eb ve\u00e7ant\u00eb\" src=\"\/wp-content\/uploads\/2019\/10\/e69e30ba059af157f021c9cb33a59f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>PostgreSQL dhe konfigurimi i konsistenc\u00ebs s\u00eb shkrimit p\u00ebr \u00e7do lidhje t\u00eb ve\u00e7ant\u00eb<br \/>\nN\u00eb Compose, ne p\u00ebrballemi me shum\u00eb baza t\u00eb dh\u00ebnash, dhe kjo na jep mund\u00ebsin\u00eb t\u00eb njohim m\u00eb nga af\u00ebr funksionalitetin dhe t\u00eb metat e tyre. Nd\u00ebrsa m\u00ebsojm\u00eb t\u00eb duam ve\u00e7orit\u00eb funksionale t\u00eb bazave t\u00eb dh\u00ebnash t\u00eb reja, ndonj\u00ebher\u00eb fillojm\u00eb t\u00eb mendojm\u00eb se sa mir\u00eb do t\u00eb ishte n\u00ebse funksione t\u00eb ngjashme do t\u00eb ishin t\u00eb pranishme edhe n\u00eb mjetet m\u00eb t\u00eb pjekura me t\u00eb cilat kemi punuar p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb. Nj\u00eb nga ve\u00e7orit\u00eb e reja q\u00eb do t\u00eb doja t\u00eb shihja n\u00eb PostgreSQL ishte koherenca e regjistrit t\u00eb personalizuar sipas lidhjes n\u00eb t\u00eb gjith\u00eb klasterin. Dhe si\u00e7 doli, ne tashm\u00eb e kemi at\u00eb, dhe sot d\u00ebshirojm\u00eb t\u00eb ndajm\u00eb me ju informacionin se si mund ta p\u00ebrdorni at\u00eb.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p><\/p>\n<h1 id=\"zachem-mne-eto\">Pse m\u00eb nevojitet kjo?<\/h1>\n<p><\/p>\n<p>Si nj\u00eb klaster duhet t\u00eb sillet varet nga aplikacioni juaj. Merrni si shembull nj\u00eb aplikacion p\u00ebr pagesat. Ju nevojitet nj\u00eb p\u00ebrputhje e plot\u00eb n\u00eb klaster, prandaj do t\u00eb duhet t\u00eb aktivizoni komitetet sinkrone, n\u00eb m\u00ebnyr\u00eb q\u00eb databaza juaj t\u00eb pres\u00eb derisa t\u00eb b\u00ebhen t\u00eb gjitha ndryshimet. Megjithat\u00eb, n\u00ebse aplikacioni juaj \u00ebsht\u00eb nj\u00eb rrjet social q\u00eb po zhvillohet shpejt, sigurisht q\u00eb do t\u00eb preferoni nj\u00eb reagim t\u00eb shpejt\u00eb me p\u00ebrputhje t\u00eb plot\u00eb. P\u00ebr ta arritur k\u00ebt\u00eb, mund t\u00eb p\u00ebrdorni komitetet asinkrone n\u00eb klasterin tuaj.<\/p>\n<p><\/p>\n<h2 id=\"znakomtes-kompromiss\">Njoftohuni me kompromisin<\/h2>\n<p><\/p>\n<p>Ju do t\u00eb duhet t\u00eb b\u00ebni nj\u00eb kompromis mes p\u00ebrputhshm\u00ebris\u00eb s\u00eb t\u00eb dh\u00ebnave dhe performanc\u00ebs. PostgreSQL ec\u00ebn nga p\u00ebrputhshm\u00ebria, pasi konfigurimi standart n\u00eb k\u00ebt\u00eb rast \u00ebsht\u00eb i parashikuesh\u00ebm dhe pa surpriza t\u00eb papritura. Tani le t\u00eb njihemi me kompromiset.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-1-proizvoditelnost\">Kompromisi 1: Performanca<\/h3>\n<p><\/p>\n<p>N\u00ebse klusteri PostgreSQL nuk ka nevoj\u00eb p\u00ebr koherenc\u00eb, ai mund t\u00eb funksionoj\u00eb asinkronisht. Shkruarja b\u00ebhet te lideri i klasterit, dhe p\u00ebrkopjet e tij do t\u00eb marrin p\u00ebrdit\u00ebsime pas disa milisekondash. Kur klusteri PostgreSQL k\u00ebrkon koherenc\u00eb, ai duhet t\u00eb funksionoj\u00eb sinkronisht. Shkruarja do t\u00eb b\u00ebhet te lideri i klasterit, i cili do t'i d\u00ebrgoj\u00eb p\u00ebrkopjeve p\u00ebrdit\u00ebsimin dhe do t\u00eb pres\u00eb konfirmimin q\u00eb secila ka kryer shkruarjen, para se t\u00eb d\u00ebrgoj\u00eb konfirmimin te klienti q\u00eb iniciatoi shkruarjen, n\u00eb lidhje me suksesin e saj. Nj\u00eb ndryshim praktik midis k\u00ebtyre qasjeve \u00ebsht\u00eb se metoda asinkrone k\u00ebrkon dy skacera n\u00eb rrjet, nd\u00ebrsa ajo sinkrone kat\u00ebr. <\/p>\n<p><\/p>\n<h3 id=\"kompromiss-2-soglasovannost\">Kompromisi 2: Koherenca<\/h3>\n<p><\/p>\n<p>Rezultati n\u00eb rast t\u00eb d\u00ebshtimit t\u00eb liderit n\u00eb k\u00ebto dy qasje do t\u00eb jet\u00eb gjithashtu i ndrysh\u00ebm. N\u00ebse puna kryhet asinkronisht, at\u00ebher\u00eb n\u00eb rast t\u00eb nj\u00eb gabimi t\u00eb till\u00eb, jo t\u00eb gjitha regjistrimet do t\u00eb konfirmohen nga replikat. Sa do t\u00eb humbas\u00eb? Varet nga vet\u00eb aplikacioni dhe efikasiteti i replikimit. Replikimi Compose do t\u00eb pengoj\u00eb replik\u00ebn t\u00eb b\u00ebhet lider n\u00ebse sasia e informacionit n\u00eb t\u00eb \u00ebsht\u00eb 1 MB m\u00eb pak se n\u00eb lider, q\u00eb do t\u00eb thot\u00eb se potencialisht mund t\u00eb humben deri n\u00eb 1 MB t\u00eb regjistrimeve gjat\u00eb pun\u00ebs asinkrone. <\/p>\n<p><\/p>\n<p>N\u00eb modalitetin sinkron kjo nuk ndodh. N\u00ebse lideri d\u00ebshton, t\u00eb gjitha replikat p\u00ebrdit\u00ebsohen, pasi \u00e7do regjistrim i konfirmuar nga lideri duhet t\u00eb konfirmohet n\u00eb replikat. K\u00ebtu \u00ebsht\u00eb \u2013 konsistenca. <\/p>\n<p><\/p>\n<p>P\u00ebrgjigjja sinkronike ka kuptim t\u00eb p\u00ebrdoret n\u00eb nj\u00eb aplikacion p\u00ebr pages\u00ebn e faturave, ku q\u00ebndrueshm\u00ebria ka nj\u00eb avantazh t\u00eb qart\u00eb n\u00eb gjetjen e nj\u00eb kompromisi midis q\u00ebndrueshm\u00ebris\u00eb dhe performanc\u00ebs. M\u00eb e r\u00ebnd\u00ebsishmja p\u00ebr nj\u00eb aplikacion t\u00eb till\u00eb jan\u00eb t\u00eb dh\u00ebnat e vlefshme. Tani kujtoni p\u00ebr nj\u00eb rrjet social, ku q\u00ebllimi kryesor \u00ebsht\u00eb t\u00eb ruhet v\u00ebmendja e p\u00ebrdoruesit duke iu p\u00ebrgjigjur k\u00ebrkesave sa m\u00eb shpejt. N\u00eb k\u00ebt\u00eb rast, performanca me m\u00eb pak hopa rrjeti dhe m\u00eb pak pritje p\u00ebr komitete do t\u00eb jet\u00eb n\u00eb prioritet. Megjithat\u00eb, kompromisi midis performanc\u00ebs dhe q\u00ebndrueshm\u00ebris\u00eb nuk \u00ebsht\u00eb i vetmi q\u00eb duhet t\u00eb mendohet.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-3-sboi\">Kompromisi 3: D\u00ebshtimet<\/h3>\n<p><\/p>\n<p>\u00cbsht shum\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptohet se si sillet klusteri gjat\u00eb nj\u00eb d\u00ebshtimi. Le t\u00eb marrim nj\u00eb situat\u00eb ku nj\u00eb ose m\u00eb shum\u00eb replika d\u00ebshtojn\u00eb. Kur angazhimet p\u00ebrpunohen asinkronisht, lideri do t\u00eb vazhdoj\u00eb t\u00eb funksionoj\u00eb, duke pranuar dhe p\u00ebrpunuar regjistrime pa pritur p\u00ebr replikat e humbura. Kur replikat kthehen n\u00eb kluster, ato arrijn\u00eb liderin. Me replikimin sinkron, n\u00ebse replikat nuk p\u00ebrgjigjen, lideri nuk do t\u00eb ket\u00eb zgjedhje tjet\u00ebr dhe do t\u00eb vazhdoj\u00eb t\u00eb pret konfirmimin e angazhimit deri sa replika t\u00eb kthehet n\u00eb kluster dhe t\u00eb mund t\u00eb pranoj\u00eb dhe konfirmoj\u00eb regjistrimin.<\/p>\n<p><\/p>\n<h2 id=\"po-odnomu-soedineniyu-na-tranzakciyu\">Nj\u00eb lidhje p\u00ebr transaksion?<\/h2>\n<p><\/p>\n<p>\u00c7do aplikacion ka nevoj\u00eb p\u00ebr nj\u00eb lloj t\u00eb ve\u00e7ant\u00eb kombinimi t\u00eb konsistenc\u00ebs dhe performanc\u00ebs. N\u00ebse natyrisht nuk \u00ebsht\u00eb aplikacioni yn\u00eb p\u00ebr pagesa, t\u00eb cilin ne e imagjinojm\u00eb si plot\u00ebsisht t\u00eb konsoliduar, ose aplikacioni yn\u00eb p\u00ebr rrjetet sociale, q\u00eb \u00ebsht\u00eb pothuajse etereal. N\u00eb t\u00eb gjith\u00eb rastet e tjera, do t\u00eb ket\u00eb momente kur disa operacione duhet t\u00eb jen\u00eb sinkrone dhe disa asinkrone. Mund t\u00eb mos d\u00ebshironit q\u00eb sistemi t\u00eb pres\u00eb derisa nj\u00eb mesazh i d\u00ebrguar n\u00eb bised\u00eb t\u00eb komitohet, por n\u00ebse n\u00eb t\u00eb nj\u00ebjtin aplikacion kalon nj\u00eb pages\u00eb, at\u00ebher\u00eb do t\u00eb duhet t\u00eb pres\u00ebsh.<\/p>\n<p><\/p>\n<p>T\u00eb gjitha k\u00ebto vendime, natyrisht, i merr zhvilluesi i aplikacionit. Vendimet e duhura p\u00ebr at\u00eb se kur t\u00eb aplikoni nj\u00eb qasje t\u00eb caktuar do t\u00eb ndihmojn\u00eb n\u00eb nxjerrjen e maksimumit nga klasteri. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme q\u00eb zhvilluesi t\u00eb mund t\u00eb kaloj\u00eb midis tyre n\u00eb nivelin SQL p\u00ebr lidhjet dhe p\u00ebr transaksionet. <\/p>\n<p><\/p>\n<h2 id=\"obespechenie-kontrolya-na-praktike\">Sigurimi i kontrollit n\u00eb praktik\u00eb<\/h2>\n<p><\/p>\n<p>N\u00eb m\u00ebnyr\u00eb default, PostgreSQL siguron konsistenc\u00eb. Kjo kontrollohet nga parametri i serverit <code>synchronous_commit<\/code>. Nga default, ai \u00ebsht\u00eb n\u00eb pozit\u00ebn <code>n\u00eb<\/code>, por ka edhe tre variante t\u00eb tjera: <code>local<\/code>, <code>remote_write<\/code> ose <code>off<\/code>.<\/p>\n<p><\/p>\n<p>Kur vendosni parametrin n\u00eb <code>off<\/code> ndalen t\u00eb gjitha komitetet sinjkrone, madje edhe n\u00eb sistemin lokal. Parametri n\u00eb local p\u00ebrcakton modin sinjkrone p\u00ebr sistemin lokal, por regjistrimet n\u00eb replika kryhen asinkronisht. <code>Remote_write<\/code> shkon edhe m\u00eb thell\u00eb: regjistrimet n\u00eb replika kryhen asinkronisht, por kthehen, kur replika ka pranuar regjistrimin, por nuk e ka shkruar at\u00eb n\u00eb disk.<\/p>\n<p><\/p>\n<p>Duke shqyrtuar gam\u00ebn e mund\u00ebsive ekzistuese, ne zgjedhim sjelljen dhe, duke mbajtur parasysh se <code>n\u00eb<\/code> \u2013 jan\u00eb regjistrime sinjkrone, ne do t\u00eb zgjedhim <code>local<\/code> p\u00ebr komitetet asinkrone n\u00eb rrjet, duke l\u00ebn\u00eb komitetet lokale si sinjkrone.<\/p>\n<p><\/p>\n<p>Tani, ne do t'ju tregojm\u00eb se si t\u00eb konfiguroni k\u00ebt\u00eb shpejt, por imagjinoni se ne kemi instaluar <code>synchronous_commit<\/code> n\u00eb <code>local<\/code> p\u00ebr serverin. Ne u pyet\u00ebm, a \u00ebsht\u00eb e mundur t\u00eb ndryshohet parametri <code>synchronous_commit<\/code> n\u00eb fluturim, dhe rezultoi se jo vet\u00ebm q\u00eb \u00ebsht\u00eb e mundur, por ka madje dy m\u00ebnyra p\u00ebr t\u00eb b\u00ebr\u00eb k\u00ebt\u00eb. E para \u2013 \u00ebsht\u00eb t\u00eb caktoni sesionin e lidhjes tuaj n\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">SET SESSION synchronous_commit TO ON;  \n\/\/ Shkruani k\u00ebtu<\/code><\/pre>\n<p><\/p>\n<p>T\u00eb gjitha regjistrimet e m\u00ebpasshme n\u00eb sesion do t\u00eb konfirmojn\u00eb operacionet e regjistrimit p\u00ebr replikat, para se t'i kthejn\u00eb nj\u00eb p\u00ebrgjigje pozitive klientit t\u00eb lidhur. N\u00ebse, sigurisht, nuk e ndryshoni p\u00ebrs\u00ebri cil\u00ebsimin <code>synchronous_commit<\/code> mund t\u00eb hiqet pjesa <code>SESSION<\/code> n\u00eb ekip, pasi do t\u00eb jet\u00eb me vler\u00eb t\u00eb paracaktuar.<\/p>\n<p><\/p>\n<p>M\u00ebnyra e dyt\u00eb \u00ebsht\u00eb e mir\u00eb kur thjesht d\u00ebshiron t\u00eb sigurohesh q\u00eb merrni replikimin sinhron p\u00ebr nj\u00eb transaksion. N\u00eb shum\u00eb baza t\u00eb dh\u00ebnash t\u00eb tipit &#171;NoSQL&#187; nuk ekziston koncepti i transaksioneve, por ai ekziston n\u00eb PostgreSQL. N\u00eb k\u00ebt\u00eb rast, filloni nj\u00eb transaksion dhe pastaj vendosni <code>synchronous_commit<\/code> n\u00eb <code>n\u00eb<\/code> para se t\u00eb kryesh shkrimin p\u00ebr transaksionin. <code>COMMIT<\/code> do t\u00eb regjistroj\u00eb transaksionin duke p\u00ebrdorur \u00e7do vler\u00eb parametri <code>synchronous_commit<\/code>, e cila ishte vendosur n\u00eb at\u00eb moment, por \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb p\u00ebrcaktosh variabl\u00ebn paraprakisht p\u00ebr t\u00eb siguruar q\u00eb zhvilluesit e tjer\u00eb t\u00eb kuptojn\u00eb se shkrimet nuk jan\u00eb asinkrone.<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">BEGIN;  \nSET LOCAL synchronous_commit TO ON;  \n\/\/ Shkrimet tuaja k\u00ebtu\nCOMMIT;  <\/code><\/pre>\n<p><\/p>\n<p>T\u00eb gjitha komitetet e transaksioneve tani do t\u00eb konfirmohen, si\u00e7 jan\u00eb regjistruar n\u00eb replika para se baza e t\u00eb dh\u00ebnave t\u00eb kthej\u00eb nj\u00eb p\u00ebrgjigje pozitive p\u00ebr klientin e lidhur.<\/p>\n<p><\/p>\n<h2 id=\"nastroyka-postgresql\">Konfigurimi i PostgreSQL<\/h2>\n<p><\/p>\n<p>Para k\u00ebsaj, ne imagjinonim sistemin PostgreSQL me <code>synchronous_commit<\/code>, i vendosur n\u00eb <code>local<\/code>. P\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb realitet n\u00eb an\u00ebn e serverit, do t'ju duhet t\u00eb vendosni dy parametra konfigurimi t\u00eb serverit. Nj\u00eb tjet\u00ebr parametr <code>synchronous_standby_names<\/code> do t\u00eb hyj\u00eb n\u00eb fuqi kur <code>synchronous_commit<\/code> t\u00eb jet\u00eb n\u00eb <code>n\u00eb<\/code>. Ai p\u00ebrcakton se cilat replikat kan\u00eb t\u00eb drejt\u00eb t\u00eb b\u00ebjn\u00eb komitete sinkronike, dhe ne do ta vendosim at\u00eb n\u00eb <code>*<\/code>, q\u00eb do t\u00eb thot\u00eb angazhimi i t\u00eb gjitha replikave. K\u00ebto vlera zakonisht konfigurohen n\u00eb <noindex><a rel=\"nofollow\" href=\"http:\/\/www.postgresql.org\/docs\/9.4\/static\/config-setting.html#CONFIG-SETTING-CONFIGURATION-FILE\">skedari i konfigurimit<\/a><\/noindex> n\u00ebp\u00ebrmjet shtimit t\u00eb: <\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">synchronous_commit = local  \nsynchronous_standby_names='*'<\/code><\/pre>\n<p><\/p>\n<p>Duke vendosur parametrin <code>synchronous_commit<\/code> n\u00eb vler\u00eb <code>local<\/code>, ne krijojm\u00eb nj\u00eb sistem ku disqet lokale mbeten sinkronike, por komitetet e replikave rrjet m\u00eb default jan\u00eb asinkronike. N\u00ebse, sigurisht, nuk vendosim t'i b\u00ebjm\u00eb k\u00ebto komitete sinkronike, si\u00e7 tregohet m\u00eb sip\u00ebr.<\/p>\n<p><\/p>\n<p>N\u00ebse keni ndjekur zhvillimin e <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/compose\/governor\">projektit Governor<\/a><\/noindex>, mund t\u00eb keni v\u00ebn\u00eb re disa ndryshime t\u00eb fundit (<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>), t\u00eb cilat lejuan p\u00ebrdoruesit e Governor t\u00eb testojn\u00eb k\u00ebto parametra dhe t\u00eb kontrollojn\u00eb koherenc\u00ebn e tyre.<\/p>\n<p><\/p>\n<h2 id=\"esche-para-slov\">K\u00ebtu jan\u00eb disa fjal\u00eb\u2026<\/h2>\n<p><\/p>\n<p>N\u00eb fakt, jav\u00ebn e kaluar do t'ju thosha se ishte e pamundur t\u00eb b\u00ebje nj\u00eb optimizim kaq t\u00eb detajuar t\u00eb PostgreSQL. At\u00ebher\u00eb, Kurt, nj\u00eb an\u00ebtar i ekipit t\u00eb platform\u00ebs Compose, insistoi q\u00eb nj\u00eb mund\u00ebsi e till\u00eb ekzistonte. Ai qet\u00ebsoi kund\u00ebrshtimet e mia dhe gjeti n\u00eb dokumentacionin e PostgreSQL <noindex><a rel=\"nofollow\" href=\"http:\/\/www.postgresql.org\/docs\/devel\/static\/runtime-config-wal.html#GUC-SYNCHRONOUS-COMMIT\">t\u00eb m\u00ebposhtmen<\/a><\/noindex>:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL dhe konfigurimi i konsistenc\u00ebs s\u00eb shkrimit p\u00ebr \u00e7do lidhje t\u00eb ve\u00e7ant\u00eb\" src=\"\/wp-content\/uploads\/2019\/10\/e77e97e588fa3d1e8acbe5de0e26436a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Ky ky\u00e7 mund t\u00eb ndryshohet n\u00eb \u00e7do koh\u00eb. Sjellja p\u00ebr \u00e7do transaksion p\u00ebrcaktohet nga konfigurimi q\u00eb \u00ebsht\u00eb n\u00eb fuqi gjat\u00eb komitit. Prandaj, \u00ebsht\u00eb e mundur dhe e dobishme q\u00eb p\u00ebr disa transaksione komit\u00ebt t\u00eb realizohen n\u00eb m\u00ebnyr\u00eb sinkrone, nd\u00ebrsa p\u00ebr t\u00eb tjer\u00ebt \u2013 n\u00eb m\u00ebnyr\u00eb asinkrone. P\u00ebr shembull, p\u00ebr t\u00eb detyruar nj\u00eb <code>multistatement<\/code> transaksion t\u00eb b\u00ebj\u00eb komit\u00eb asinkrone, kur vlera e parametrave t\u00eb paracaktuar \u00ebsht\u00eb e kund\u00ebrt, vendosni <\/em><code>SET LOCAL synchronous_commit TO OFF<\/code> <em>n\u00eb transaksion.<\/em><\/p>\n<p><\/p>\n<p>Me nj\u00eb modifikim t\u00eb till\u00eb t\u00eb vog\u00ebl n\u00eb skedarin e konfigurimit, u dham\u00eb p\u00ebrdoruesve mund\u00ebsin\u00eb p\u00ebr t\u00eb kontrolluar koherenc\u00ebn dhe performanc\u00ebn e tyre.<\/p>\n<p>Burimi: <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.0.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\/sq\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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 dhe konfigurimet e koherenc\u00ebs s\u00eb shkruar p\u00ebr \u00e7do lidhje specifike | ProHoster","description":"P\u00ebrkthimi i artikullit \u00ebsht\u00eb p\u00ebrgatitur posa\u00e7\u00ebrisht p\u00ebr student\u00ebt e kursit \"Baza t\u00eb Dh\u00ebnash\". A do t\u00eb ishte interesante t\u00eb zhvillohesh n\u00eb k\u00ebt\u00eb drejtim?","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/postgresql-i-nastrojki-soglasovannosti-zapisi-dlya-kazhdogo-konkretnogo-soedineniya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/39169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=39169"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/39169\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/29395"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=39169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=39169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=39169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}