{"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 konfigurimet e q\u00ebndrueshm\u00ebris\u00eb s\u00eb sh\u00ebnimeve p\u00ebr \u00e7do lidhje t\u00eb caktuar","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><em>P\u00ebrkthimi i artikullit \u00ebsht\u00eb p\u00ebrgatitur ve\u00e7an\u00ebrisht p\u00ebr student\u00ebt e kursit <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">\u00abBaza e T\u00eb Dh\u00ebnave\u00bb<\/a><\/noindex>. A \u00ebsht\u00eb interesante t\u00eb zhvilloheni n\u00eb k\u00ebt\u00eb fush\u00eb? Ju ftojm\u00eb n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/jCX0\/\">Dita e D\u00ebgjes\u00ebs<\/a><\/noindex>, ku ne flasim n\u00eb detaje p\u00ebr programin, ve\u00e7orit\u00eb e formatit online, kompetencat dhe perspektivat e karrier\u00ebs q\u00eb presin t\u00eb diplomuarit pas p\u00ebrfundimit t\u00eb shkollimit.<\/em><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL dhe konfigurimet e q\u00ebndrueshm\u00ebris\u00eb s\u00eb sh\u00ebnimeve p\u00ebr \u00e7do lidhje t\u00eb caktuar\" src=\"\/wp-content\/uploads\/2019\/10\/e69e30ba059af157f021c9cb33a59f51.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>PostgreSQL dhe konfigurimet e q\u00ebndrueshm\u00ebris\u00eb s\u00eb sh\u00ebnimeve p\u00ebr \u00e7do lidhje t\u00eb caktuar<br \/>\nNe n\u00eb Compose p\u00ebrballemi me shum\u00eb baza t\u00eb dh\u00ebnash, dhe pik\u00ebrisht kjo na ofron mund\u00ebsin\u00eb t\u00eb njohim m\u00eb mir\u00eb funksionalitetin dhe mang\u00ebsit\u00eb e tyre. Nd\u00ebrsa m\u00ebsojm\u00eb t\u00eb duam ve\u00e7orit\u00eb funksionale t\u00eb bazave t\u00eb reja t\u00eb dh\u00ebnash, ndonj\u00ebher\u00eb fillojm\u00eb t\u00eb mendojm\u00eb se si do t\u00eb ishte mir\u00eb n\u00ebse funksione t\u00eb tilla do t\u00eb ishin gjithashtu t\u00eb pranishme n\u00eb mjetet m\u00eb t\u00eb drejta me t\u00eb cilat punojm\u00eb prej 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 p\u00ebrputhja e personalizueshme e shkruarjes p\u00ebr lidhjen n\u00eb t\u00eb gjith\u00eb klasterin. Dhe si\u00e7 duket, ne tashm\u00eb e kemi at\u00eb, dhe sot duam 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 duhet kjo?<\/h1>\n<p><\/p>\n<p>Sesi duhet t\u00eb veproj\u00eb klasteri varet nga aplikacioni juaj. Merrni si shembull nj\u00eb aplikacion p\u00ebr pagesat e faturave. Ju nevojitet nj\u00eb p\u00ebrputhje e plot\u00eb n\u00eb klaster, prandaj do t'ju duhet t\u00eb aktivizoni kommitet\u00ebt sinkron\u00eb, p\u00ebr t\u00eb pritur q\u00eb 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, ju me siguri do t\u00eb preferoni nj\u00eb p\u00ebrgjigje t\u00eb shpejt\u00eb mbi p\u00ebrputhshm\u00ebrin\u00eb e plot\u00eb. P\u00ebr ta arritur k\u00ebt\u00eb, mund t\u00eb p\u00ebrdorni kommitet\u00ebt asinkron\u00eb n\u00eb klasterin tuaj.<\/p>\n<p><\/p>\n<h2 id=\"znakomtes-kompromiss\">Njohtuni 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 avanc\u00f3n nga p\u00ebrputhshm\u00ebria, pasi konfigurimi standard n\u00eb k\u00ebt\u00eb rast del t\u00eb jet\u00eb parashikues dhe pa surpriza t\u00eb papritura. Tani le t\u00eb njohim 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 gjith\u00ebp\u00ebrfshirje, ai mund t\u00eb funksionoj\u00eb plot\u00ebsisht asinkron. Shkruhet te lideri i klasterit, dhe p\u00ebrkopjet e tij do t\u00eb d\u00ebrgohen p\u00ebr azhurnim disa milisekonda m\u00eb von\u00eb. Kur klusteri PostgreSQL k\u00ebrkon gjith\u00ebp\u00ebrfshirje, ai duhet t\u00eb funksionoj\u00eb sinkron. Shkruhet te lideri i klasterit, i cili d\u00ebrgon azhurnimin te p\u00ebrkopjet dhe pret konfirmimin se \u00e7do p\u00ebrkopje ka kryer regjistrimin p\u00ebrpara se t'i d\u00ebrgoj\u00eb konfirmimin klientit q\u00eb ka iniciuar shkruan, se ajo kaloi me sukses. Diferenca praktike midis k\u00ebtyre qasjeve \u00ebsht\u00eb se metoda asinkrone ka nevoj\u00eb p\u00ebr dy skakanime n\u00eb rrjet, nd\u00ebrsa ajo sinkrone ka kat\u00ebr. <\/p>\n<p><\/p>\n<h3 id=\"kompromiss-2-soglasovannost\">Kompromisi 2: Gjat\u00ebp\u00ebrfshirja<\/h3>\n<p><\/p>\n<p>Rezultati n\u00eb rast t\u00eb d\u00ebshtimit t\u00eb liderit n\u00eb k\u00ebto dy qasje gjithashtu do t\u00eb jet\u00eb ndryshe. N\u00ebse operacioni kryhet asinkronisht, at\u00ebher\u00eb, n\u00eb rast t\u00eb nj\u00eb gabimi, jo t\u00eb gjitha regjistrimet do t\u00eb jen\u00eb p\u00ebrfshir\u00eb nga p\u00ebrkopjet. Sa do t\u00eb humbas\u00eb? Varet nga aplikacioni vet\u00eb dhe efekti i p\u00ebrkopjimit. P\u00ebrkopjimi i Compose do t\u00eb parandaloj\u00eb p\u00ebrkopjen t\u00eb b\u00ebhet lider n\u00ebse sasia e informacionit n\u00eb t\u00eb \u00ebsht\u00eb 1 MB m\u00eb e vog\u00ebl se ajo n\u00eb lider, q\u00eb do t\u00eb thot\u00eb se potencialisht mund t\u00eb humbasin deri n\u00eb 1 MB regjistrimesh gjat\u00eb funksionimit asinkron. <\/p>\n<p><\/p>\n<p>N\u00eb modin sinkron, kjo nuk ndodh. N\u00ebse lideri d\u00ebshton, t\u00eb gjitha p\u00ebrkopjet azhurnohen, pasi \u00e7do regjistrim i konfirmuar te lideri duhet t\u00eb konfirmohet n\u00eb p\u00ebrkopje. K\u00ebtu \u00ebsht\u00eb \u2013 gjith\u00ebp\u00ebrfshirja. <\/p>\n<p><\/p>\n<p>Kjo sjellje sinkrone ka kuptim t\u00eb p\u00ebrdoret n\u00eb nj\u00eb aplikacion p\u00ebr pagesa, ku gjith\u00ebp\u00ebrfshirja ka nj\u00eb avantazh t\u00eb duksh\u00ebm n\u00eb k\u00ebrkimin e kompromisit midis gjith\u00ebp\u00ebrfshirjes dhe performanc\u00ebs. E r\u00ebnd\u00ebsishme p\u00ebr nj\u00eb aplikacion t\u00eb till\u00eb jan\u00eb t\u00eb dh\u00ebnat valide. Dhe tani kujtoni p\u00ebr rrjetin social, ku detyra kryesore \u00ebsht\u00eb t\u00eb mbani v\u00ebmendjen e p\u00ebrdoruesit, duke u p\u00ebrgjigjur sa m\u00eb shpejt t\u00eb jet\u00eb e mundur. N\u00eb k\u00ebt\u00eb rast, performanca me m\u00eb pak skakanime n\u00eb rrjet dhe m\u00eb pak pritje p\u00ebr konfirmimet do t\u00eb jet\u00eb prioritet. Megjithat\u00eb, kompromisi midis performanc\u00ebs dhe gjith\u00ebp\u00ebrfshirjes nuk \u00ebsht\u00eb e vetmja gj\u00eb p\u00ebr t\u00eb cil\u00ebn duhet t\u00eb mendoni.<\/p>\n<p><\/p>\n<h3 id=\"kompromiss-3-sboi\">Kompromisi 3: D\u00ebshtimet<\/h3>\n<p><\/p>\n<p>\u00cbsht\u00eb shum\u00eb e r\u00ebnd\u00ebsishme t\u00eb kuptojm\u00eb se si e drejton klasteri sjelljen e tij gjat\u00eb nj\u00eb crash-i. Le t\u00eb shqyrtojm\u00eb situat\u00ebn kur 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, dmth do t\u00eb pranoj\u00eb dhe p\u00ebrpunoj\u00eb sh\u00ebnimet pa pritur p\u00ebr replikat q\u00eb mungojn\u00eb. Kur replikat kthehen n\u00eb klaster, ato e ndjekin liderin. N\u00eb rastin e replikimit sinkron, n\u00ebse replikat nuk p\u00ebrgjigjen, lideri nuk do t\u00eb ket\u00eb zgjidhje dhe do t\u00eb vazhdoj\u00eb t\u00eb pres\u00eb konfirmimin e angazhimit derisa rekorda t\u00eb kthehet n\u00eb klaster dhe t\u00eb jet\u00eb n\u00eb gjendje t\u00eb pranoj\u00eb dhe t\u00eb konfirmoj\u00eb sh\u00ebnimin.<\/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 t\u00eb kombinimit t\u00eb koherenc\u00ebs dhe performanc\u00ebs. N\u00ebse sigurisht q\u00eb nuk \u00ebsht\u00eb aplikacioni yn\u00eb p\u00ebr pagesat e llogarive, t\u00eb cilin e imagjinojm\u00eb si plot\u00ebsisht koherent, apo aplikacioni yn\u00eb pothuajse efemer p\u00ebr rrjetin social. N\u00eb t\u00eb gjitha rastet e tjera, do t\u00eb ket\u00eb momente kur disa operacione duhet t\u00eb jen\u00eb sinkrone, nd\u00ebrsa t\u00eb tjerat asinkrone. Ndoshta nuk d\u00ebshironi q\u00eb sistemi t\u00eb pres\u00eb derisa nj\u00eb mesazh i d\u00ebrguar n\u00eb bised\u00eb t\u00eb angazhohet, por n\u00ebse n\u00eb t\u00eb nj\u00ebjtin aplikacion b\u00ebhet nj\u00eb pages\u00eb, at\u00ebher\u00eb do t\u00eb duhet t\u00eb presim.<\/p>\n<p><\/p>\n<p>T\u00eb gjitha k\u00ebto vendime, sigurisht, merr zhvilluesi i aplikacionit. Vendimet e duhura p\u00ebr kur t\u00eb p\u00ebrdoren qasje t\u00eb ndryshme do t\u00eb ndihmojn\u00eb t\u00eb nxirren maksimumin nga klasteri. \u00cbsht\u00eb e r\u00ebnd\u00ebsishme q\u00eb zhvilluesi t\u00eb jet\u00eb n\u00eb gjendje 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>Me default, PostgreSQL ofron koherenc\u00eb. Kjo kontrollohet nga parametri i serverit <code>synchronous_commit<\/code>. Me default, ai \u00ebsht\u00eb n\u00eb pozicionin <code>n\u00eb<\/code>, por ka tre opsione t\u00eb tjera: <code>local<\/code>, <code>remote_write<\/code> ose <code>off<\/code>.<\/p>\n<p><\/p>\n<p>Kur parametrat jan\u00eb vendosur n\u00eb <code>off<\/code> t\u00eb gjitha angazhimet sinkrone do t\u00eb ndalen, madje edhe n\u00eb sistemin lokal. Parametri n\u00eb lokal p\u00ebrcakton modin sinkron p\u00ebr sistemin lokal, por sh\u00ebnimet n\u00eb replika b\u00ebhen asinkronisht. <code>Remote_write<\/code> shkon edhe m\u00eb tej: sh\u00ebnimet n\u00eb replika b\u00ebhen asinkronisht, por kthehen kur replika pranon sh\u00ebnimin, por jo kur e regjistron at\u00eb n\u00eb disk.<\/p>\n<p><\/p>\n<p>Duke marr\u00eb parasysh gam\u00ebn e disponueshme t\u00eb opsioneve, ne zgjedhim sjelljen dhe, duke mbajtur mend se <code>n\u00eb<\/code> \u2013 \u00ebsht\u00eb sh\u00ebnime sinkrone, ne do t\u00eb zgjedhim <code>local<\/code> p\u00ebr angazhimet asinkrone p\u00ebrmes rrjetit, duke l\u00ebn\u00eb t\u00eb angazhuarit lokal\u00eb sinkrone.<\/p>\n<p><\/p>\n<p>Tani, do t\u00eb tregojm\u00eb se si ta konfiguroni k\u00ebt\u00eb n\u00eb nj\u00eb \u00e7ast, por imagjinoni se kemi instaluar <code>synchronous_commit<\/code> n\u00eb <code>local<\/code> p\u00ebr serverin. Na erdhi n\u00eb mendje, a \u00ebsht\u00eb e mundur t\u00eb ndryshohet parametri <code>synchronous_commit<\/code> n\u00eb flak\u00eb, dhe doli se jo vet\u00ebm q\u00eb \u00ebsht\u00eb e mundur, por p\u00ebr k\u00ebt\u00eb ka edhe dy m\u00ebnyra t\u00eb plota. E para \u2013 \u00ebsht\u00eb t\u00eb caktoni sesionin tuaj t\u00eb lidhjes si m\u00eb posht\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 shkrimet e m\u00ebtejshme n\u00eb sesion do t\u00eb konfirmojn\u00eb operacionet e shkrimit p\u00ebr replikat, para se t\u00eb kthejn\u00eb nj\u00eb rezultat pozitiv p\u00ebr klientin e lidhur. N\u00ebse, sigurisht, nuk e ndryshoni p\u00ebrs\u00ebri konfigurimin <code>synchronous_commit<\/code> Mund t\u00eb injoroni pjes\u00ebn <code>SESSION<\/code> n\u00eb komand\u00eb, pasi do t\u00eb jet\u00eb n\u00eb vler\u00ebn e parazgjedhur.<\/p>\n<p><\/p>\n<p>M\u00ebnyra e dyt\u00eb \u00ebsht\u00eb e mir\u00eb kur thjesht doni t\u00eb siguroheni q\u00eb po merrni replikimin sinkron p\u00ebr nj\u00eb transaksion. N\u00eb shum\u00eb baza t\u00eb t\u00eb dh\u00ebnave t\u00eb tipit \"NoSQL\" nuk ekziston koncepti i transaksioneve, por ai ekziston n\u00eb PostgreSQL. N\u00eb k\u00ebt\u00eb rast, ju filloni nj\u00eb transaksion dhe pastaj vendosni <code>synchronous_commit<\/code> n\u00eb <code>n\u00eb<\/code> para ekzekutimit t\u00eb shkrimit p\u00ebr transaksionin. <code>KREJT<\/code> do t\u00eb regjistroj\u00eb transaksionin, duke p\u00ebrdorur \u00e7do vler\u00eb t\u00eb parametrin <code>synchronous_commit<\/code>, e cila ishte vendosur n\u00eb at\u00eb moment, megjithat\u00eb \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb caktoni ndryshoren 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\/\/ Shkruani k\u00ebtu\nCOMMIT;  <\/code><\/pre>\n<p><\/p>\n<p>T\u00eb gjitha komitetet e transaksioneve tani do t\u00eb konfirmohen, si t\u00eb regjistruara n\u00eb replikat 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>M\u00eb par\u00eb, ne e imagjinonim sistemin PostgreSQL me <code>synchronous_commit<\/code>, vendosur n\u00eb <code>local<\/code>. P\u00ebr ta b\u00ebr\u00eb k\u00ebt\u00eb t\u00eb mundur n\u00eb an\u00ebn e serverit, duhet t\u00eb vendosni dy parametra t\u00eb konfigurimit t\u00eb serverit. Nj\u00eb parametr tjet\u00ebr <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 cilat replika kan\u00eb t\u00eb drejt\u00eb p\u00ebr komitetet sinkrone, dhe ne do ta vendosim at\u00eb n\u00eb <code>*<\/code>, e cila do t\u00eb thot\u00eb p\u00ebrfshirjen e 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\">skedarin e konfigurimit<\/a><\/noindex> duke shtuar: <\/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\u00ebn <code>local<\/code>, ne krijojm\u00eb nj\u00eb sistem n\u00eb t\u00eb cilin disqet lokale mbeten sinkrone, por komitetet e replikave n\u00eb rrjet jan\u00eb parazgjedhur asinkrone. N\u00ebse, sigurisht, nuk vendosim t\u00eb b\u00ebjm\u00eb k\u00ebto komitete sinkrone, si\u00e7 \u00ebsht\u00eb treguar 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>), q\u00eb 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\">Pak fjal\u00eb t\u00eb tjera...<\/h2>\n<p><\/p>\n<p>Vet\u00ebm nj\u00eb jav\u00eb m\u00eb par\u00eb, do t'ju isha th\u00ebn\u00eb q\u00eb ishte e pamundur t\u00eb p\u00ebrshtaten kaq holl\u00ebsisht PostgreSQL. Pik\u00ebrisht at\u00ebher\u00eb, Kurt, nj\u00eb an\u00ebtar i ekipit t\u00eb platform\u00ebs Compose, insistonte se 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 dh\u00ebna t\u00eb m\u00ebposhtme<\/a><\/noindex>:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL dhe konfigurimet e q\u00ebndrueshm\u00ebris\u00eb s\u00eb sh\u00ebnimeve p\u00ebr \u00e7do lidhje t\u00eb caktuar\" src=\"\/wp-content\/uploads\/2019\/10\/e77e97e588fa3d1e8acbe5de0e26436a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><em>Ky paramet\u00ebr 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 n\u00eb momentin e komitit. Prandaj, \u00ebsht\u00eb e mundur dhe e dobishme q\u00eb p\u00ebr disa transaksione komitimet t\u00eb b\u00ebhen sinkronikisht, derisa p\u00ebr t\u00eb tjerat t\u00eb jen\u00eb asinkronike. P\u00ebr shembull, p\u00ebr t\u00eb b\u00ebr\u00eb nj\u00eb <code>multistatement<\/code> transaksion t\u00eb b\u00ebj\u00eb komitimet asinkronike, kur vlera e parametrit t\u00eb default \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, i dham\u00eb mund\u00ebsin\u00eb p\u00ebrdoruesve t\u00eb kontrollonin 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.2 - 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.2\" \/>\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 sh\u00ebnimeve p\u00ebr \u00e7do lidhje t\u00eb ve\u00e7ant\u00eb | 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 jeni t\u00eb interesuar t\u00eb zhvilloheni 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}]}}