{"id":38232,"date":"2019-10-31T22:22:28","date_gmt":"2019-10-31T19:22:28","guid":{"rendered":"https:\/\/prohoster.info\/blog\/odin-iz-metodov-polucheniya-istorii-blokirovok-v-postgresql\/"},"modified":"2019-10-31T22:22:28","modified_gmt":"2019-10-31T19:22:28","slug":"odin-iz-metodov-polucheniya-istorii-blokirovok-v-postgresql","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/odin-iz-metodov-polucheniya-istorii-blokirovok-v-postgresql","title":{"rendered":"Nj\u00eb nga metodat p\u00ebr t\u00eb marr\u00eb historin\u00eb e bllokimeve n\u00eb PostgreSQL","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Vazhdoi Artikulli &#171;<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/467181\/\">P\u00ebrpjekja p\u00ebr t\u00eb krijuar nj\u00eb analog t\u00eb ASH p\u00ebr PostgreSQL <\/a><\/noindex>&#171;.<\/p>\n<p>Artikulli do t\u00eb shqyrtoj\u00eb dhe tregoj\u00eb p\u00ebrmes k\u00ebrkesave dhe shembujve konkret\u00eb \u2014 se cilat informacione t\u00eb dobishme mund t\u00eb merren nga historia e paraqitjes pg_locks.<\/p>\n<blockquote><p>Kujdes.<br \/>\nN\u00eb lidhje me novitetin e tem\u00ebs dhe p\u00ebrfundimin e periudh\u00ebs s\u00eb testimit, artikulli mund t\u00eb p\u00ebrmbaj\u00eb gabime. Kritikat dhe v\u00ebrejtjet jan\u00eb gjithmon\u00eb t\u00eb mir\u00ebpritura dhe t\u00eb pritura.<\/p><\/blockquote>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>T\u00eb dh\u00ebnat hyr\u00ebse<\/h2>\n<p><\/p>\n<h3>Historia e paraqitjes pg_locks<\/h3>\n<p>\n<b class=\"spoiler_title\">archive_locking<\/b><\/p>\n<pre><code class=\"pgsql\">CREATE TABLE archive_locking \n(       timepoint timestamp pa zon\u00eb kohore ,\n\tlocktype tekst ,\n\trelation oid ,\n\tmode tekst ,\n\ttid xid ,\n\tvtid tekst ,\n\tpid integer ,\n\tblocking_pids integer[] ,\n\tgranted boolean ,\n        queryid bigint \n);<\/code><\/pre>\n<p>\nN\u00eb thelb, tabela \u00ebsht\u00eb e ngjashme me tabel\u00ebn <b>archive_pg_stat_activity<\/b>, e p\u00ebrshkruar m\u00eb holl\u00ebsisht k\u00ebtu \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/467277\/\">pg_stat_statements + pg_stat_activity + loq_query = pg_ash? <\/a><\/noindex> dhe k\u00ebtu \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/467181\/\">P\u00ebrpjekja p\u00ebr t\u00eb krijuar nj\u00eb analog t\u00eb ASH p\u00ebr PostgreSQL.<\/a><\/noindex><\/p>\n<p>P\u00ebr t\u00eb mbushur kolon\u00ebn <b>queryid<\/b> p\u00ebrdoret funksioni <\/p>\n<p><b class=\"spoiler_title\">update_history_locking_by_queryid<\/b><\/p>\n<pre><code class=\"pgsql\">--update_history_locking_by_queryid.sql\nCREATE OR REPLACE FUNCTION update_history_locking_by_queryid() RETURNS boolean AS $$\nDECLARE\n  result boolean ;\n  current_minute double precision ; \n  \n  start_minute integer ;\n  finish_minute integer ;\n  \n  start_period timestamp without time zone ;\n  finish_period timestamp without time zone ;\n  \n  lock_rec record ; \n  endpoint_rec record ;\n  \n  current_hour_diff double precision ;\nBEGIN\n  RAISE NOTICE '***update_history_locking_by_queryid';\n  \n  result = TRUE ;\n  \n  current_minute = extract ( minute from now() );\n\n  SELECT * FROM endpoint WHERE is_need_monitoring\n  INTO endpoint_rec ;\n  \n  current_hour_diff = endpoint_rec.hour_diff ;\n  \n  IF current_minute &lt; 5 \n  THEN\n\tRAISE NOTICE &#039;Current time is less than 5 minute.&#039;;\n\t\n\tstart_period = date_trunc(&#039;hour&#039;,now()) + (current_hour_diff * interval &#039;1 hour&#039;);\n    finish_period = start_period - interval &#039;5 minute&#039; ;\n  ELSE \n    finish_minute =  extract ( minute from now() ) \/ 5 ;\n    start_minute =  finish_minute - 1 ;\n  \n    start_period = date_trunc(&#039;hour&#039;,now()) + interval &#039;1 minute&#039;*start_minute*5+(current_hour_diff * interval &#039;1 hour&#039;);\n    finish_period = date_trunc(&#039;hour&#039;,now()) + interval &#039;1 minute&#039;*finish_minute*5+(current_hour_diff * interval &#039;1 hour&#039;) ;\n    \n  END IF ;  \n  \n  RAISE NOTICE &#039;start_period = %&#039;, start_period;\n  RAISE NOTICE &#039;finish_period = %&#039;, finish_period;\n\n\tFOR lock_rec IN   \n\tWITH act_queryid AS\n\t (\n\t\tSELECT \n\t\t\t\tpid , \n\t\t\t\ttimepoint ,\n\t\t\t\tquery_start AS started ,\t\t\t\n\t\t\t\tMAX(timepoint) OVER (PARTITION BY pid ,\tquery_start   ) AS finished ,\t\t\t\n\t\t\t\tqueryid \n\t\tFROM \n\t\t\t\tactivity_hist.history_pg_stat_activity \t\t\t\n\t\tWHERE \t\t\t\n\t\t\t\ttimepoint BETWEEN start_period and \n\t\t\t\t\t\t\t\t  finish_period\n\t\tGROUP BY \n\t\t\t\tpid , \n\t\t\t\ttimepoint ,  \n\t\t\t\tquery_start ,\n\t\t\t\tqueryid \n\t ),\n\t lock_pids AS\n\t\t(\n\t\t\tSELECT\n\t\t\t\thl.pid , \n\t\t\t\thl.locktype  ,\n\t\t\t\thl.mode ,\n\t\t\t\thl.timepoint , \n\t\t\t\tMIN ( timepoint ) OVER (PARTITION BY pid , locktype  ,mode ) as started \n\t\t\tFROM \n\t\t\t\tactivity_hist.history_locking hl\n\t\t\tWHERE \n\t\t\t\thl.timepoint between start_period and \n\t\t\t\t\t\t\t\t     finish_period\n\t\t\tGROUP BY \n\t\t\t\thl.pid , \n\t\t\t\thl.locktype  ,\n\t\t\t\thl.mode ,\n\t\t\t\thl.timepoint \n\t\t)\n\tSELECT \n\t\tlp.pid , \n\t\tlp.locktype  ,\n\t\tlp.mode ,\n\t\tlp.timepoint ,     \n\t\taq.queryid \n\tFROM lock_pids \tlp LEFT OUTER JOIN act_queryid aq ON ( lp.pid = aq.pid AND lp.started BETWEEN aq.started AND aq.finished )\n\tWHERE aq.queryid IS NOT NULL \n\tGROUP BY  \n\t\tlp.pid , \n\t\tlp.locktype  ,\n\t\tlp.mode ,\n\t\tlp.timepoint , \n\t\taq.queryid\n\tLOOP\n\t\tUPDATE activity_hist.history_locking SET queryid = lock_rec.queryid \n\t\tWHERE pid = lock_rec.pid AND locktype = lock_rec.locktype AND mode = lock_rec.mode AND timepoint = lock_rec.timepoint ;\t\n\tEND LOOP;    \n  \n  RETURN result ;\nEND\n$$ LANGUAGE plpgsql;<\/code><\/pre>\n<p>\n<b>Shpjegim:<\/b> Vlera e kolon\u00ebs queryid p\u00ebrdit\u00ebsohet n\u00eb tabel\u00ebn history_locking, dhe m\u00eb pas, kur krijohet nj\u00eb seksion i ri p\u00ebr tabel\u00ebn archive_locking, vlera do t\u00eb ruhet n\u00eb vlerat historike. <\/p>\n<h2>T\u00eb dh\u00ebnat dal\u00ebse<\/h2>\n<p>\nInformacion i p\u00ebrgjithsh\u00ebm, p\u00ebr proceset n\u00eb t\u00ebr\u00ebsi.<\/p>\n<h3>PRITJA E BLLOKIMEVE NGA LLOJET E BLLOKIMEVE<\/h3>\n<p>\n<b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"pgsql\">ME\nt SI\n(\n\tZgjidhni \n\t\tlocktype  ,\n\t\tmode ,\n\t\tcount(*) si total \n\tNga \n\t\tactivity_hist.archive_locking\n\tKu \n\t\ttimepoint midis pg_stat_history_begin+(current_hour_diff * interval '1 hour') DHE pg_stat_history_end+(current_hour_diff * interval '1 hour') DHE \n\t\tNuk u dha\n\tGruponi sipas \n\t\tlocktype  ,\n\t\tmode  \n)\nZgjidhni \n\tlocktype  ,\n\tmode ,\n\ttotal * interval '1 second' si koh\u00eb\t\t\t\nNga t \t\t\nRendit sipas 3 ZMADHES <\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">Shembuj<\/b><\/p>\n<pre>| PRITJA E BLLOKIMEVE NGA LLOJET E BLLOKIMEVE\n+--------------------+------------------------------+--------------------\n|            locktype|                          mode|            duration\n+--------------------+------------------------------+--------------------\n|       transactionid|                     ShareLock|            19:39:26\n|               tuple|           AccessExclusiveLock|            00:03:35\n+--------------------+------------------------------+--------------------\n<\/pre>\n<p><\/p>\n<h3>MARRJET E BLLOKIMEVE NGA LLOJET E BLLOKIMEVE<\/h3>\n<p>\n<b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"pgsql\">ME\nt SI\n(\n\tZgjidhni \n\t\tlocktype  ,\n\t\tmode ,\n\t\tcount(*) si total \n\tNga \n\t\tactivity_hist.archive_locking\n\tKu \n\t\ttimepoint midis pg_stat_history_begin+(current_hour_diff * interval '1 hour') DHE pg_stat_history_end+(current_hour_diff * interval '1 hour') DHE \n\t\tu dha\n\tGruponi sipas \n\t\tlocktype  ,\n\t\tmode  \n)\nZgjidhni \n\tlocktype  ,\n\tmode ,\n\ttotal * interval '1 second' si koh\u00eb\t\t\t\nNga t \t\t\nRendit sipas 3 ZMADHES <\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">Shembuj<\/b><\/p>\n<pre>| MARRJA E KLOKAVE NGA LLOJET E KLOKAVE\n+--------------------+------------------------------+--------------------\n|            lloji i klokes|                          moda|            koh\u00ebzgjatja\n+--------------------+------------------------------+--------------------\n|            marr\u00ebdh\u00ebnia|              RowExclusiveLock|            51:11:10\n|          virtualxid|                 ExclusiveLock|            48:10:43\n|       id e transaksionit|                 ExclusiveLock|            44:24:53\n|            marr\u00ebdh\u00ebnia|               AccessShareLock|            20:06:13\n|               tupel|           AccessExclusiveLock|            17:58:47\n|               tupel|                 ExclusiveLock|            01:40:41\n|            marr\u00ebdh\u00ebnia|      ShareUpdateExclusiveLock|            00:26:41\n|              objekti|              RowExclusiveLock|            00:00:01\n|       id e transaksionit|                     ShareLock|            00:00:01\n|              zgjatje|                 ExclusiveLock|            00:00:01\n+--------------------+------------------------------+--------------------\n<\/pre>\n<p>\nInformacion i detajuar p\u00ebr k\u00ebrkesat e ve\u00e7anta me queryid<\/p>\n<h3>PO PRIT KLOKAT NGA LLOJET E KLOKAVE NGA QUERYID<\/h3>\n<p>\n<b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"pgsql\">ME\nlt SI\n(\n\tZBULO\n\t\tpid , \n\t\tlocktype  ,\n\t\tmode ,\n\t\ttimepoint , \n\t\tqueryid , \n\t\tblocking_pids ,\n                MIN ( timepoint ) OVER (PARTITION BY pid , locktype  ,mode ) si filluar  \n\tFROM \n\t\tactivity_hist.archive_locking\n\tKU\n\t\ttimepoint nd\u00ebrmjet pg_stat_history_begin+(current_hour_diff * interval '1 hour') DHE \n\t\t\t                  pg_stat_history_end+(current_hour_diff * interval '1 hour') DHE \n\t\tNuk u dha DHE\n\t       queryid NUK \u00ebsht\u00eb NULL \n\tGRUPI NGA \n\t        pid , \n\t\tlocktype  ,\n\t\tmode ,\n\t\ttimepoint ,\n\t\tqueryid ,\n\t\tblocking_pids \n)\nZBULO\n        lt.pid , \n\tlt.locktype  ,\n\tlt.mode ,\t\t\t\n        lt.filluar ,\n\tlt.queryid  ,\n\tlt.blocking_pids ,\n\tCOUNT(*)  * interval '1 second'\t si koh\u00ebzgjatje\t\t\nFROM lt \t\nGRUPI NGA \n\tlt.pid , \n        lt.locktype  ,\n\tlt.mode ,\t\t\t\n        lt.filluar ,\n        lt.queryid ,\n\tlt.blocking_pids \nRENDIT DHE 4<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">Shembuj<\/b><\/p>\n<pre>| PRITENDA E LOCKAVE NGA LLOJET DHE ID T\u00cb K\u00cbRKES\u00cbS\n+----------+-------------------------+--------------------+------------------------------+--------------------+--------------------+--------------------\n|       pid|                 locktype|                mode|                       started|             queryid|       blocking_pids|            duration\n+----------+-------------------------+--------------------+------------------------------+--------------------+--------------------+--------------------\n|     11288|            transactionid|           ShareLock|    2019-09-17 10:00:00.302936|  389015618226997618|             {11092}|            00:03:34\n|     11626|            transactionid|           ShareLock|    2019-09-17 10:00:21.380921|  389015618226997618|             {12380}|            00:00:29\n|     11626|            transactionid|           ShareLock|    2019-09-17 10:00:21.380921|  389015618226997618|             {11092}|            00:03:25\n|     11626|            transactionid|           ShareLock|    2019-09-17 10:00:21.380921|  389015618226997618|             {12213}|            00:01:55\n|     11626|            transactionid|           ShareLock|    2019-09-17 10:00:21.380921|  389015618226997618|             {12751}|            00:00:01\n|     11629|            transactionid|           ShareLock|    2019-09-17 10:00:24.331935|  389015618226997618|             {11092}|            00:03:22\n|     11629|            transactionid|           ShareLock|    2019-09-17 10:00:24.331935|  389015618226997618|             {12007}|            00:00:01\n|     12007|            transactionid|           ShareLock|    2019-09-17 10:05:03.327933|  389015618226997618|             {11629}|            00:00:13\n|     12007|            transactionid|           ShareLock|    2019-09-17 10:05:03.327933|  389015618226997618|             {11092}|            00:01:10\n|     12007|            transactionid|           ShareLock|    2019-09-17 10:05:03.327933|  389015618226997618|             {11288}|            00:00:05\n|     12213|            transactionid|           ShareLock|    2019-09-17 10:06:07.328019|  389015618226997618|             {12007}|            00:00:10<\/pre>\n<p><\/p>\n<h3>MARR\u00cbN LOCKASH ME LLOJ LOCKASH ME QUERYID<\/h3>\n<p>\n<b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"pgsql\">ME\nlt SI\n(\n\tZBJEDH\n\t\tpid , \n\t\tlloj_locku  ,\n\t\tmodi ,\n\t\tnokta_e_koh\u00ebs , \n\t\tqueryid , \n\t\tpid_blokues ,\n                MIN ( nokta_e_koh\u00ebs ) N\u00cb (SHKATHT\u00cbSI P\u00cbR pid , lloji_locku ,modi ) si filluar  \n\tFROM \n\t\tactivity_hist.archive_locking\n\tWHERE \n\t\tnokta_e_koh\u00ebs midis pg_stat_history_begin+(current_hour_diff * interval '1 or\u00eb') DHE \n\t\t\t                  pg_stat_history_end+(current_hour_diff * interval '1 or\u00eb') DHE \n\t\tpranuar DHE\n\t\tqueryid NUK \u00cbSHT\u00cb NULL \n\tGRUPI NGA \n\t        pid , \n\t\tlloj_locku  ,\n\t\tmodi ,\n\t\tnokta_e_koh\u00ebs ,\n\t\tqueryid ,\n\t\tpid_blokues \n)\nZBJEDH \n        lt.pid , \n\tlt.lloj_locku  ,\n\tlt.modi ,\t\t\t\n        lt.filluar ,\n\tlt.queryid  ,\n\tlt.pid_blokues ,\n\tCOUNT(*)  * interval '1 sekond'\t si koh\u00ebzgjatje\t\t\t\nFROM lt \t\nGRUPI NGA \n\tlt.pid , \n\tlt.lloj_locku  ,\n\tlt.modi ,\t\t\t\n        lt.filluar ,\n\tlt.queryid ,\n\tlt.pid_blokues \nRUJTO KRENARE 4<\/code><\/pre>\n<p>\n<b class=\"spoiler_title\">Shembuj<\/b><\/p>\n<pre>| MARRJA E BLLOKIMEVE NGA LLOJET E BLLOKIMEVE ME QUERYID\n+----------+-------------------------+--------------------+------------------------------+--------------------+--------------------+--------------------\n|       pid|                 lloji i bllokimit|                m\u00ebnyra|                       fillimi|             queryid|       bllokimi_pidve|            koh\u00ebzgjatja\n+----------+-------------------------+--------------------+------------------------------+--------------------+--------------------+--------------------\n|     11288|                 marr\u00ebdh\u00ebnia|    RowExclusiveLock|    2019-09-17 10:00:00.302936|  389015618226997618|             {11092}|            00:03:34\n|     11092|            id transaksioni|       ExclusiveLock|    2019-09-17 10:00:00.302936|  389015618226997618|                  {}|            00:03:34\n|     11288|                 marr\u00ebdh\u00ebnia|    RowExclusiveLock|    2019-09-17 10:00:00.302936|  389015618226997618|                  {}|            00:00:10\n|     11092|                 marr\u00ebdh\u00ebnia|    RowExclusiveLock|    2019-09-17 10:00:00.302936|  389015618226997618|                  {}|            00:03:34\n|     11092|               virtualxid|       ExclusiveLock|    2019-09-17 10:00:00.302936|  389015618226997618|                  {}|            00:03:34\n|     11288|               virtualxid|       ExclusiveLock|    2019-09-17 10:00:00.302936|  389015618226997618|             {11092}|            00:03:34\n|     11288|            id transaksioni|       ExclusiveLock|    2019-09-17 10:00:00.302936|  389015618226997618|             {11092}|            00:03:34\n|     11288|                    tuple| AccessExclusiveLock|    2019-09-17 10:00:00.302936|  389015618226997618|             {11092}|            00:03:34<\/pre>\n<p>\n<b>P\u00ebrdorimi i historikut t\u00eb bllokimeve p\u00ebr analiz\u00ebn e incidenteve t\u00eb performanc\u00ebs.<\/b><\/p>\n<ol>\n<li>K\u00ebrkesa me queryid=389015618226997618 e ekzekutuar nga procesi me pid=11288 priste bllokimin q\u00eb nga 2019-09-17 10:00:00 p\u00ebr gjat\u00eb 3 minutash.<\/li>\n<li>Bllokimin e mbante procesi me pid=11092<\/li>\n<li>Procesi me pid=11092 duke ekzekutuar k\u00ebrkes\u00ebn me queryid=389015618226997618 q\u00eb nga 2019-09-17 10:00:00 mbante bllokimin p\u00ebr gjat\u00eb 3 minutash.<\/li>\n<\/ol>\n<p><\/p>\n<h2>P\u00ebrfundimi<\/h2>\n<p>\nTani, shpresoj q\u00eb t\u00eb filloj\u00eb m\u00eb interesanti dhe i dobishmi \u2013 mbledhja e statistikave dhe analiza e rasteve nga historiku i pritjeve dhe bllokimeve. <\/p>\n<p>N\u00eb perspektiv\u00eb, shpresoj t\u00eb krijohet nj\u00eb grup i disa si nota (ngjash\u00ebm me metalinkun e Oracle).<\/p>\n<p>N\u00eb t\u00eb v\u00ebrtet\u00eb, pik\u00ebrisht p\u00ebr k\u00ebt\u00eb arsye metodika e p\u00ebrdorur del sa m\u00eb shpejt p\u00ebr njohjen e p\u00ebrgjithshme.<\/p>\n<p>N\u00eb koh\u00ebn m\u00eb t\u00eb af\u00ebrt do t\u00eb p\u00ebrpiqem ta ngarkoj projektin n\u00eb github.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/467719\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 &#171;\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433 ASH \u0434\u043b\u044f PostgreSQL &#171;. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u2014 \u043a\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f pg_locks. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043d\u043e\u0432\u0438\u0437\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438. \u041a\u0440\u0438\u0442\u0438\u043a\u0430 \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f \u0438 \u043e\u0436\u0438\u0434\u0430\u044e\u0442\u0441\u044f. \u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38232","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 &quot;\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433 ASH \u0434\u043b\u044f PostgreSQL &quot;. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u2014 \u043a\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f pg_locks. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043d\u043e\u0432\u0438\u0437\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438. \u041a\u0440\u0438\u0442\u0438\u043a\u0430 \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f \u0438 \u043e\u0436\u0438\u0434\u0430\u044e\u0442\u0441\u044f.\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0418\u0441\u0442\u043e\u0440\u0438\u044f\" \/>\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\/odin-iz-metodov-polucheniya-istorii-blokirovok-v-postgresql\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\udd47\u041e\u0434\u0438\u043d \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a \u0432 PostgreSQL | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 &quot;\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433 ASH \u0434\u043b\u044f PostgreSQL &quot;. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u2014 \u043a\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f pg_locks. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043d\u043e\u0432\u0438\u0437\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438. \u041a\u0440\u0438\u0442\u0438\u043a\u0430 \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f \u0438 \u043e\u0436\u0438\u0434\u0430\u044e\u0442\u0441\u044f.\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0418\u0441\u0442\u043e\u0440\u0438\u044f\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/odin-iz-metodov-polucheniya-istorii-blokirovok-v-postgresql\" \/>\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:22:28+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:22:28+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\udd47Nj\u00eb nga metodat p\u00ebr t\u00eb marr\u00eb historin\u00eb e bllokimeve n\u00eb PostgreSQL | ProHoster","description":"Vazhdimi i artikullit \"P\u00ebrpjekja p\u00ebr t\u00eb krijuar nj\u00eb analog t\u00eb ASH p\u00ebr PostgreSQL\". Artikulli do t\u00eb shqyrtoj\u00eb dhe tregoj\u00eb me k\u00ebrkesa dhe shembuj t\u00eb ve\u00e7ant\u00eb \u2014 \u00e7far\u00eb informacioni t\u00eb dobish\u00ebm mund t\u00eb merret me an\u00eb t\u00eb historis\u00eb s\u00eb paraqitjeve pg_locks. Paralajm\u00ebrim. N\u00eb lidhje me novitetin e tem\u00ebs dhe pa p\u00ebrfundimin e periudh\u00ebs s\u00eb testimit, artikulli mund t\u00eb p\u00ebrmbaj\u00eb gabime. Kritika dhe v\u00ebrejtjet jan\u00eb t\u00eb mir\u00ebpritura dhe priten. T\u00eb dh\u00ebnat e hyrjes Historia","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/odin-iz-metodov-polucheniya-istorii-blokirovok-v-postgresql","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\udd47\u041e\u0434\u0438\u043d \u0438\u0437 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043e\u043a \u0432 PostgreSQL | ProHoster","og:description":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 &quot;\u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u043e\u0433 ASH \u0434\u043b\u044f PostgreSQL &quot;. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u043e \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u0445 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445 \u2014 \u043a\u0430\u043a\u0443\u044e \u0436\u0435 \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f pg_locks. \u041f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0435\u043d\u0438\u0435. \u0412 \u0441\u0432\u044f\u0437\u0438 \u0441 \u043d\u043e\u0432\u0438\u0437\u043d\u043e\u0439 \u0442\u0435\u043c\u044b \u0438 \u043d\u0435\u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435\u043c \u043f\u0435\u0440\u0438\u043e\u0434\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0441\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438. \u041a\u0440\u0438\u0442\u0438\u043a\u0430 \u0438 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f \u0432\u0441\u044f\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f \u0438 \u043e\u0436\u0438\u0434\u0430\u044e\u0442\u0441\u044f.\u0412\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0418\u0441\u0442\u043e\u0440\u0438\u044f","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/odin-iz-metodov-polucheniya-istorii-blokirovok-v-postgresql","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:22:28+00:00","article:modified_time":"2019-10-31T19:22:28+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38232","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-23 21:03:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:13:22","updated":"2026-01-23 21:03:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/38232","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=38232"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/38232\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=38232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=38232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=38232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}