{"id":32353,"date":"2019-10-31T21:46:32","date_gmt":"2019-10-31T18:46:32","guid":{"rendered":"https:\/\/prohoster.info\/blog\/monitoring-proizvoditelnosti-zaprosov-postgresql-chast-1-reporting\/"},"modified":"2019-10-31T21:46:32","modified_gmt":"2019-10-31T18:46:32","slug":"monitoring-proizvoditelnosti-zaprosov-postgresql-chast-1-reporting","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/monitoring-proizvoditelnosti-zaprosov-postgresql-chast-1-reporting","title":{"rendered":"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 \u2014 raportimi.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Inxhinier \u2014 n\u00eb p\u00ebrkthim nga latinishtja \u2014 i frym\u00ebzuar.<br \/>\nInxhinieri mund t\u00eb b\u00ebj\u00eb gjith\u00e7ka. (c) R.Dizel.<br \/>\n<i>Epigraf\u00ebt.<\/i><br \/>\n<img decoding=\"async\" alt=\"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 \u2014 raportimi.\" src=\"\/wp-content\/uploads\/2019\/04\/9a2640267ea05006b94e03642b864ddc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ose historia se p\u00ebrse nj\u00eb administrator i databaz\u00ebs duhet t\u00eb kujtoj\u00eb t\u00eb kaluar\u00ebn e tij si programues. <\/i><\/p>\n<h2>Parath\u00ebnie<\/h2>\n<p>\nT\u00eb gjitha emrat jan\u00eb t\u00eb ndryshuar. Rast\u00ebsit\u00eb jan\u00eb t\u00eb rastit. Materiali p\u00ebrb\u00ebn ekskluzivisht mendimin personal t\u00eb autorit.<\/p>\n<blockquote><p><b>P\u00ebrgjegj\u00ebsia e garantive:<\/b> <i>n\u00eb ciklin e planifikuar t\u00eb artikujve nuk do t\u00eb ket\u00eb p\u00ebrshkrime t\u00eb detajuara dhe t\u00eb sakta t\u00eb tabelave dhe skripteve t\u00eb p\u00ebrdorura. Materialet nuk do t\u00eb mund t\u00eb p\u00ebrdoren menj\u00ebher\u00eb \"SIQ\". <br \/>\nS\u00eb pari, p\u00ebr shkak t\u00eb volumit t\u00eb madh t\u00eb materialit, <br \/>\ns\u00eb dyti p\u00ebr shkak t\u00eb fokusit me baz\u00ebn e prodhimit t\u00eb klientit real. <br \/>\nPrandaj, n\u00eb artikuj do t\u00eb jepen vet\u00ebm ide dhe p\u00ebrshkrime n\u00eb nj\u00eb form\u00eb t\u00eb p\u00ebrgjithshme. <br \/>\nNdoshta n\u00eb t\u00eb ardhmen sistemi do t\u00eb rritet n\u00eb nivelin e publikimit n\u00eb GitHub, ndoshta jo. Koha do ta tregoj\u00eb.<\/i><\/p><\/blockquote>\n<p>\nFillimi i historis\u00eb - \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/icl_services\/blog\/446314\/\">A e mban mend si filloi gjith\u00e7ka<\/a><\/noindex>\u00bb.<br \/>\n\u00c7far\u00eb doli si rezultat, n\u00eb m\u00ebnyr\u00eb t\u00eb p\u00ebrgjithshme - \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444988\/\">Sinteza si nj\u00eb nga metodat p\u00ebr p\u00ebrmir\u00ebsimin e performanc\u00ebs s\u00eb PostgreSQL<\/a><\/noindex>\u00bb<\/p>\n<h2>P\u00ebrse gjith kjo m\u00eb intereson?<\/h2>\n<p>\nE para, p\u00ebr t\u00eb mos harruar, duke kujtuar dit\u00ebt e bukura n\u00eb pension. <br \/>\nE dyta, p\u00ebr t\u00eb sistematizuar at\u00eb q\u00eb kam shkruar. Sepse ndonj\u00ebher\u00eb vet\u00eb, filloj t\u00eb ngat\u00ebrrohem dhe harroj disa pjes\u00eb. <\/p>\n<p>E dhe e r\u00ebnd\u00ebsishmja \u2014 ndoshta do t'i ndihmoj\u00eb dikujt t\u00eb mos shpik\u00eb rrot\u00ebn dhe t\u00eb mos p\u00eblcitet me t\u00eb. Me fjal\u00eb t\u00eb tjera, t\u00eb p\u00ebrmir\u00ebsoj\u00eb karma e tij (jo ajo e Habr). Sepse, gj\u00ebja m\u00eb e \u00e7muar n\u00eb k\u00ebt\u00eb bot\u00eb jan\u00eb idet\u00eb. E r\u00ebnd\u00ebsishme \u00ebsht\u00eb t\u00eb gjejm\u00eb nj\u00eb ide. Realizimi i saj n\u00eb realitet \u00ebsht\u00eb nj\u00eb \u00e7\u00ebshtje strikt teknike.<\/p>\n<p>Pra, le t\u00eb fillojm\u00eb, ngadal\u00eb...<\/p>\n<h2>Formulimi i detyr\u00ebs.<\/h2>\n<p><\/p>\n<h3>Shk\u00ebputja p\u00ebrmbledh\u00ebse: <\/h3>\n<p>\nBaza e t\u00eb dh\u00ebnave PostgreSQL (10.5), me ngarkes\u00eb t\u00eb p\u00ebrzier (OLTP+DSS), me ngarkes\u00eb mesatare-t\u00eb vog\u00ebl, e vendosur n\u00eb cloud AWS. <br \/>\nMonitorimi i baz\u00ebs s\u00eb t\u00eb dh\u00ebnave mungon, monitorimi i infrastruktur\u00ebs \u00ebsht\u00eb i p\u00ebrfaq\u00ebsuar nga mjetet standarde t\u00eb AWS n\u00eb konfigurimin minimal.<\/p>\n<h3>K\u00ebrkohet:<\/h3>\n<p>\nT\u00eb monitorosh performanc\u00ebn dhe gjendjen e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, t\u00eb gjesh dhe t\u00eb kesh informacion fillestar p\u00ebr optimizimin e k\u00ebrkesave t\u00eb r\u00ebnda ndaj DB.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Nj\u00eb parath\u00ebnie e shkurt\u00ebr ose analiza e mund\u00ebsive t\u00eb zgjidhjes<\/h2>\n<p>\nFillimisht, do t\u00eb p\u00ebrpiqemi t\u00eb analizojm\u00eb mund\u00ebsit\u00eb p\u00ebr zgjidhjen e detyr\u00ebs nga k\u00ebndv\u00ebshtrimi i analiz\u00ebs krahasuese t\u00eb p\u00ebrfitimeve dhe shqet\u00ebsimeve p\u00ebr inxhinierin, nd\u00ebrsa p\u00ebrfitimet dhe humbjet p\u00ebr menaxhimin le t\u00eb merret me ato q\u00eb i takon sipas orarit t\u00eb pun\u00ebs.<\/p>\n<h3>Mund\u00ebsia 1 - \u00abPun\u00eb n\u00eb k\u00ebrkes\u00eb\u00bb<\/h3>\n<p>\nD\u00ebrrmojm\u00eb gjith\u00e7ka si\u00e7 \u00ebsht\u00eb. N\u00ebse klienti nuk \u00ebsht\u00eb i k\u00ebnaqur me di\u00e7ka n\u00eb funksionimin, performanc\u00ebn e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave ose aplikacionit, ai do t'i njoftoj\u00eb inxhinier\u00ebt DBA p\u00ebrmes e-mailit ose duke krijuar nj\u00eb incident n\u00eb sistemin e bileta. <br \/>\nInxhinieri, pasi t\u00eb marr\u00eb njoftimin, do t\u00eb hetoj\u00eb problemin, do t\u00eb propozoj\u00eb nj\u00eb zgjidhje ose do ta shtyj\u00eb problemin p\u00ebr m\u00eb von\u00eb, duke shpresuar q\u00eb gjith\u00e7ka t\u00eb zgjidhet vet\u00eb, dhe gjithsesi, shum\u00eb shpejt do t\u00eb harrohet.<br \/>\n<b class=\"spoiler_title\">P\u00ebrsh\u00ebndetje dhe bullgura, kall\u00ebzime dhe goditje<\/b><b>P\u00ebrsh\u00ebndetje dhe bullgura:<\/b><br \/>\n1. Nuk nevojitet t\u00eb b\u00ebni ndonj\u00eb gj\u00eb t\u00eb tep\u00ebrt<br \/>\n2. Gjithmon\u00eb ka mund\u00ebsi p\u00ebr t'u justifikuar dhe p\u00ebr t\u00eb shp\u00ebtuar nga puna. <br \/>\n3. Nj\u00eb shum\u00eb koh\u00eb q\u00eb mund t\u00eb shpenzohet sipas d\u00ebshir\u00ebs.<br \/>\n<b>Kall\u00ebzime dhe goditje:<\/b><br \/>\n1. Von\u00eb a her\u00ebt, klienti do t\u00eb mendoj\u00eb p\u00ebr qenien dhe drejt\u00ebsin\u00eb universale n\u00eb k\u00ebt\u00eb bot\u00eb dhe do t\u00eb pyes\u00eb veten p\u00ebrs\u00ebri \u2014 p\u00ebr \u00e7far\u00eb po paguaj parat\u00eb e tij? Pasojat gjithmon\u00eb jan\u00eb t\u00eb nj\u00ebjta \u2014 pyetje \u00ebsht\u00eb vet\u00ebm kur klienti do t\u00eb m\u00ebrzitet dhe do t\u00eb thot\u00eb lamtumir\u00eb. Dhe burimi do t\u00eb zbrazet. Kjo \u00ebsht\u00eb e trishtueshme.<br \/>\n2. Zhvillimi i inxhinierit \u2014 zero.<br \/>\n3. V\u00ebshtir\u00ebsi n\u00eb planifikimin e pun\u00ebs dhe ngarkes\u00ebs <\/p>\n<h3>Opsioni 2 - \"K\u00ebrkojm\u00eb me tambur, shesim dhe veshim\"<\/h3>\n<p>\n<b>Pika 1<\/b>-Pse na duhet nj\u00eb sistem monitorimi, ne do t\u00eb marrim gjith\u00e7ka p\u00ebrmes k\u00ebrkesave. D\u00ebrgojm\u00eb nj\u00eb s\u00ebr\u00eb k\u00ebrkesash n\u00eb fjalorin e t\u00eb dh\u00ebnave dhe prezantimet dinamike, aktivizojm\u00eb llogarit\u00ebs t\u00eb ndrysh\u00ebm, p\u00ebrmbledhim gjith\u00e7ka n\u00eb tabela, dhe p\u00ebr nj\u00eb koh\u00eb t\u00eb shkurt\u00ebr analizojm\u00eb listat dhe tabelat. Si rezultat, kemi grafike t\u00eb bukura ose jo aq t\u00eb bukura, tabela, raporte. E r\u00ebnd\u00ebsishmja \u00ebsht\u00eb q\u00eb t\u00eb kemi sa m\u00eb shum\u00eb, sa m\u00eb shum\u00eb.<br \/>\n<b>Pika 2<\/b>-Gjenerojm\u00eb aktivitet \u2013 fillojm\u00eb analiz\u00ebn e gjith\u00e7kaje.<br \/>\n<b>Pika 3<\/b>-P\u00ebrgatitemi nj\u00eb dokument, e quajm\u00eb k\u00ebt\u00eb dokument, thjesht - \u2018si t\u00eb organizojm\u00eb baz\u00ebn e t\u00eb dh\u00ebnave\u2019.<br \/>\n<b>Pika 4<\/b>-Konsumatori, duke par\u00eb gjith\u00eb k\u00ebt\u00eb madh\u00ebshti grafik\u00ebsh dhe shifrash, ndodhet n\u00eb nj\u00eb besim naiv f\u00ebmij\u00ebror - ja, tani gjith\u00e7ka do t\u00eb punoj\u00eb. Ai leht\u00ebsisht dhe pa dhimbje l\u00eb vizitat e tij financiare. Menaxhmenti gjithashtu \u00ebsht\u00eb i sigurt - inxhinier\u00ebt tan\u00eb po punojn\u00eb fort. Ngarkesa \u00ebsht\u00eb maksimale. <br \/>\n<b>Pika 5<\/b>-Rip\u00ebrs\u00ebrisni rregullisht Pik\u00ebn 1.<br \/>\n<b class=\"spoiler_title\">P\u00ebrsh\u00ebndetje dhe bullgura, kall\u00ebzime dhe goditje<\/b><b>P\u00ebrsh\u00ebndetje dhe bullgura: <\/b><br \/>\n1. Jeta e menaxher\u00ebve dhe inxhinier\u00ebve \u00ebsht\u00eb e thjesht\u00eb, e parashikueshme dhe e mbushur me aktivitet. Gjith\u00e7ka b buzzing, t\u00eb gjith\u00eb jan\u00eb t\u00eb z\u00ebn\u00eb. <br \/>\n2. Jeta e klientit \u00ebsht\u00eb gjithashtu e mir\u00eb \u2014 ai gjithmon\u00eb \u00ebsht\u00eb i sigurt se duhet t\u00eb pres\u00eb pak m\u00eb shum\u00eb dhe gjith\u00e7ka do t\u00eb rregullohet. N\u00ebse nuk rregullohet, \u00e7far\u00eb t\u00eb b\u00ebjm\u00eb \u2014 ky \u00ebsht\u00eb nj\u00eb bot\u00eb e padrejt\u00eb, ndoshta n\u00eb jet\u00ebn e ardhshme do t\u00eb ken\u00eb fat.<br \/>\n<b>Kall\u00ebzime dhe goditje:<\/b><br \/>\n1. Von\u00eb a her\u00ebt, do t\u00eb gjendet nj\u00eb ofrues m\u00eb i shpejt\u00eb i sh\u00ebrbimeve t\u00eb ngjashme, i cili do t\u00eb b\u00ebj\u00eb t\u00eb nj\u00ebjt\u00ebn gj\u00eb, por pak m\u00eb lir\u00eb. Dhe n\u00ebse rezultati \u00ebsht\u00eb i nj\u00ebjt\u00eb, pse t\u00eb paguash m\u00eb shum\u00eb. Kjo p\u00ebrs\u00ebri do t\u00eb \u00e7oj\u00eb n\u00eb zhdukjen e burimeve.<br \/>\n2. \u00cbsht\u00eb e m\u00ebrzitshme. Si \u00e7do aktivitet i paq\u00ebndruesh\u00ebm, q\u00eb ka pak kuptim.<br \/>\n3. Si n\u00eb variantin e m\u00ebparsh\u00ebm \u2014 nuk ka asnj\u00eb zhvillim. Por p\u00ebr inxhinierin, shqet\u00ebsimi \u00ebsht\u00eb se, ndryshe nga varianti i par\u00eb, k\u00ebtu duhet t\u00eb gjenerosh vazhdimisht t\u00eb dh\u00ebnat e mbrojtjes. Kjo merr koh\u00eb. E cila mund t\u00eb p\u00ebrdoret p\u00ebr dobi personale. Sepse n\u00ebse nuk kujdesesh p\u00ebr veten, askush tjet\u00ebr nuk do t\u00eb kujdeset p\u00ebr ty.<\/p>\n<h3>Varianti 3\u2014Nuk \u00ebsht\u00eb e nevojshme t\u00eb shpikni bi\u00e7iklet\u00ebn, duhet ta blini at\u00eb dhe t\u00eb ridezoni.<\/h3>\n<p>\nInxhinier\u00ebt e kompanive t\u00eb tjera nuk e b\u00ebjn\u00eb pa shkak q\u00eb t\u00eb han\u00eb pizz\u00eb duke e shoq\u00ebruar me birr\u00eb (ah, koh\u00eb t\u00eb bukura n\u00eb Sh\u00ebn Petersburg n\u00eb vitet '90). Le t\u00eb p\u00ebrdorim sisteme monitorimi q\u00eb jan\u00eb krijuar, t\u00eb testuar dhe funksionojn\u00eb, dhe q\u00eb sjellin ndihm\u00eb, qoft\u00eb edhe minimalisht p\u00ebr krijuesit t\u00eb tyre.<br \/>\n<b class=\"spoiler_title\">P\u00ebrsh\u00ebndetje dhe bullgura, kall\u00ebzime dhe goditje<\/b><b>P\u00ebrsh\u00ebndetje dhe bullgura:<\/b><br \/>\n1. Nuk e nevojitet t\u00eb humbni koh\u00eb duke menduar p\u00ebr at\u00eb q\u00eb tashm\u00eb \u00ebsht\u00eb menduar. Merrni dhe p\u00ebrdorni.<br \/>\n2. Sistemet e monitorimit nuk jan\u00eb krijuar nga budallenj dhe, sigurisht, ato jan\u00eb t\u00eb dobishme.<br \/>\n3. Sistemet e monitorimit q\u00eb funksionojn\u00eb n\u00eb p\u00ebrgjith\u00ebsi ofrojn\u00eb informacion t\u00eb filtruar dhe t\u00eb dobish\u00ebm. <br \/>\n<b>Kall\u00ebzime dhe goditje:<\/b><br \/>\n1. Inxhinieri n\u00eb k\u00ebt\u00eb rast nuk \u00ebsht\u00eb nj\u00eb inxhinier, por thjesht nj\u00eb p\u00ebrdorues i produktit t\u00eb t\u00eb tjer\u00ebve. Ose nj\u00eb p\u00ebrdorues.<br \/>\n2. Klienti duhet t\u00eb bindet p\u00ebr nevoj\u00ebn p\u00ebr t\u00eb bler\u00eb di\u00e7ka p\u00ebr t\u00eb cil\u00ebn ai nuk d\u00ebshiron t\u00eb kuptoj\u00eb, dhe as nuk duhet, dhe buxheti p\u00ebr vitin \u00ebsht\u00eb miratuar dhe nuk do t\u00eb ndryshoj\u00eb. M\u00eb pas, duhen ndar\u00eb burime t\u00eb ve\u00e7anta, t\u00eb konfigurohen p\u00ebr sistemin e caktuar. Pra, fillimisht duhet t\u00eb paguani, t\u00eb paguani dhe p\u00ebrs\u00ebri t\u00eb paguani. Dhe klienti \u00ebsht\u00eb i kursyer. Kjo \u00ebsht\u00eb norma e jet\u00ebs.<\/p>\n<h2>\u00c7far\u00eb t\u00eb b\u00ebjm\u00eb - \u00c7ernysh\u00ebvski? Pyetja jote \u00ebsht\u00eb shum\u00eb n\u00eb vend. (c)<\/h2>\n<p>\nN\u00eb k\u00ebt\u00eb rast t\u00eb ve\u00e7ant\u00eb dhe n\u00eb situat\u00ebn e krijuar, mund t\u00eb veprojm\u00eb pak ndryshe \u2014 <b>le t\u00eb b\u00ebjm\u00eb sistemin ton\u00eb t\u00eb monitorimit. <\/b><br \/>\n<img decoding=\"async\" alt=\"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 \u2014 raportimi.\" src=\"\/wp-content\/uploads\/2019\/04\/b59a3ad9e16b68c0fbc962a61d571c52.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSigurisht, nuk \u00ebsht\u00eb nj\u00eb sistem n\u00eb kuptimin e plot\u00eb t\u00eb fjal\u00ebs, kjo do t\u00eb ishte shum\u00eb e z\u00ebshme dhe vet\u00ebbesuese, por ndonj\u00eb m\u00ebnyr\u00eb p\u00ebr ta lehtesuar veten dhe p\u00ebr t\u00eb mbledhur m\u00eb shum\u00eb informacion p\u00ebr zgjidhjen e incidenteve t\u00eb performanc\u00ebs. P\u00ebr t\u00eb mos u gjetur n\u00eb situat\u00ebn - \"shkonte andej nuk di ku, gjeje at\u00eb, nuk di \u00e7far\u00eb.\"<\/p>\n<h4>Cilat jan\u00eb p\u00ebrfitimet dhe disavantazhet e k\u00ebtij varianti:<\/h4>\n<p><b>Avantazhet:<\/b><br \/>\n1. \u00cbsht\u00eb interesante. T\u00eb pakt\u00ebn \u00ebsht\u00eb m\u00eb interesante sesa vazhdim\u00ebsia \"shrink datafile, alter tablespace, etj.\" <br \/>\n2. K\u00ebto jan\u00eb aft\u00ebsi t\u00eb reja dhe zhvillim i ri. \u00c7ka n\u00eb perspektiv\u00eb do t\u00eb sjell\u00eb her\u00ebt a von\u00eb shp\u00ebrblime t\u00eb merituara.<br \/>\n<b>Disavantazhet:<\/b><br \/>\n1. Do t\u00eb duhet t\u00eb punosh. T\u00eb punosh shum\u00eb. <br \/>\n2. Do t\u00eb duhet rregullisht t\u00eb shpjegosh kuptimin dhe perspektivat e t\u00eb gjith\u00eb aktivitetit.<br \/>\n3. Do t\u00eb duhet t\u00eb sakrifikosh ndonj\u00eb gj\u00eb, sepse burimi i vet\u00ebm i disponuesh\u00ebm p\u00ebr inxhinierin - koha - \u00ebsht\u00eb e kufizuar nga Universi. <br \/>\n<b>4. Gj\u00ebja m\u00eb e frikshme dhe m\u00eb e pak\u00ebndshme<\/b> \u00ebsht\u00eb se n\u00eb rezultat mund t\u00eb dal\u00eb di\u00e7ka si \"As nj\u00eb mi, as nj\u00eb bretkoc\u00eb, por nj\u00eb krijes\u00eb e panjohur.\"<\/p>\n<p><b>Kush nuk rrezikon, nuk pi shampanj\u00eb.<\/b><br \/>\nPra, fillon pjesa m\u00eb interesante.<\/p>\n<h2>Ideja e p\u00ebrgjithshme \u00ebsht\u00eb n\u00eb m\u00ebnyr\u00eb skematike<\/h2>\n<p>\n<img decoding=\"async\" alt=\"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 \u2014 raportimi.\" src=\"\/wp-content\/uploads\/2019\/04\/d1ae2ddc1d4c43353fe93eebdaa8b81a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(<i>Imazhi \u00ebsht\u00eb marr\u00eb nga artikulli<\/i> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444988\/\">Sinteza si nj\u00eb nga metodat p\u00ebr p\u00ebrmir\u00ebsimin e performanc\u00ebs s\u00eb PostgreSQL<\/a><\/noindex>\u00bb)<\/p>\n<p>Shpjegim:<\/p>\n<ul>\n<li> N\u00eb baz\u00ebn e synuar instalohet zgjerimi standard PostgreSQL - \u201cpg_stat_statements.\u201d <\/li>\n<li>N\u00eb databaz\u00ebn e monitorimit krijojm\u00eb nj\u00eb grup tabelash sh\u00ebrbimi p\u00ebr ruajtjen e historis\u00eb pg_stat_statements n\u00eb faz\u00ebn fillestare dhe p\u00ebr konfigurimin e metrikave dhe monitorimit m\u00eb von\u00eb.<\/li>\n<li> N\u00eb host-in e monitorimit krijojm\u00eb nj\u00eb grup skriptesh bash, p\u00ebrfshir\u00eb ato p\u00ebr gjenerimin e incidenteve n\u00eb sistemin e biletave. <\/li>\n<\/ul>\n<h2>Tabela sh\u00ebrbimi<\/h2>\n<p>\nP\u00ebr fillim, nj\u00eb ERD e thjeshtuar dhe shkematike, \u00e7far\u00eb kemi arritur p\u00ebrfundimisht:<br \/>\n<img decoding=\"async\" alt=\"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 \u2014 raportimi.\" src=\"\/wp-content\/uploads\/2019\/04\/03d29f4d6932d470d9d88651cbf0c715.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b class=\"spoiler_title\">P\u00ebrshkrimi i shkurt\u00ebr i tabelave<\/b><b>endpoint <\/b> \u2014 host, pika e lidhjes me instanc\u00ebn<br \/>\n<b>database <\/b> \u2014 parametrat e databaz\u00ebs<br \/>\n<b>pg_stat_history <\/b> \u2014 tabela historike p\u00ebr ruajtjen e snapshot-eve temporale t\u00eb paraqitjes pg_stat_statements t\u00eb databaz\u00ebs s\u00eb synuar<br \/>\n<b>metric_glossary <\/b> \u2014 fjalori i metrikave t\u00eb performanc\u00ebs<br \/>\n<b>metric_config <\/b> \u2014 konfigurimi i metrikave t\u00eb ve\u00e7anta<br \/>\n<b>metric <\/b> \u2014 metrika specifike p\u00ebr k\u00ebrkes\u00ebn q\u00eb monitorohet<br \/>\n<b>metric_alert_history <\/b> \u2014 historia e paralajm\u00ebrimeve t\u00eb performanc\u00ebs<br \/>\n<b>log_query <\/b> \u2014 tabela e sh\u00ebrbimit p\u00ebr ruajtjen e regjistrimeve t\u00eb analizuar nga skedari log i PostgreSQL q\u00eb ngarkohet nga AWS<br \/>\n<b>baseline <\/b> \u2014 parametrat e periudh\u00ebs temporale t\u00eb p\u00ebrdorur si baz\u00eb <br \/>\n<b>checkpoint <\/b> \u2014 konfigurimi i metrikave p\u00ebr kontrollin e gjendjes s\u00eb databaz\u00ebs<br \/>\n<b>checkpoint_alert_history <\/b> \u2014 historia e paralajm\u00ebrimeve p\u00ebr metrikat e kontrollit t\u00eb gjendjes s\u00eb databaz\u00ebs<br \/>\n<b>pg_stat_db_queries <\/b> \u2014 tabela e sh\u00ebrbimit e k\u00ebrkesave aktive <br \/>\n<b>activity_log <\/b> \u2014 tabela e sh\u00ebrbimit t\u00eb regjistrit t\u00eb aktivitetit <br \/>\n<b>trap_oid <\/b> \u2014 tabela e sh\u00ebrbimit t\u00eb konfiguracionit t\u00eb trap<\/p>\n<p><\/p>\n<h2>Hapi 1 \u2014 mbledhim t\u00eb dh\u00ebna statistike mbi performanc\u00ebn dhe marrim raporte<\/h2>\n<p>\nTabela e p\u00ebrdorur p\u00ebr ruajtjen e informacionit statistik \u00ebsht\u00eb <b>pg_stat_history<\/b><br \/>\n<b class=\"spoiler_title\">Struktura e tabel\u00ebs pg_stat_history<\/b><\/p>\n<pre>\n                                          Tavola \"public.pg_stat_history\"\n       Kolona        |            Tipi             |                          Modifikator\u00eb\n---------------------+-----------------------------+-------------------------------------------\n id                  | integer                     | jo e zbraz\u00ebt default nextval('pg_stat_history_id_seq'::regclass)\n snapshot_timestamp  | timestamp pa zon\u00eb kohe |\n database_id         | integer                     |\n dbid                | oid                         |\n userid              | oid                         |\n queryid             | bigint                      |\n query               | tekst                       |\n calls               | bigint                      |\n total_time          | sakt\u00ebsi t\u00eb dyfisht\u00eb        |\n min_time            | sakt\u00ebsi t\u00eb dyfisht\u00eb        |\n max_time            | sakt\u00ebsi t\u00eb dyfisht\u00eb        |\n mean_time           | sakt\u00ebsi t\u00eb dyfisht\u00eb        |\n stddev_time         | sakt\u00ebsi t\u00eb dyfisht\u00eb        |\n rows                | bigint                      |\n shared_blks_hit     | bigint                      |\n shared_blks_read    | bigint                      |\n shared_blks_dirtied | bigint                      |\n shared_blks_written | bigint                      |\n local_blks_hit      | bigint                      |\n local_blks_read     | bigint                      |\n local_blks_dirtied  | bigint                      |\n local_blks_written  | bigint                      |\n temp_blks_read      | bigint                      |\n temp_blks_written   | bigint                      |\n blk_read_time       | sakt\u00ebsi t\u00eb dyfisht\u00eb        |\n blk_write_time      | sakt\u00ebsi t\u00eb dyfisht\u00eb        |\n baseline_id         | integer                     |\nIndeksat:\n    \"pg_stat_history_pkey\" \u00c7ELSI I PRIMAR, btree (id)\n    \"database_idx\" btree (database_id)\n    \"queryid_idx\" btree (queryid)\n    \"snapshot_timestamp_idx\" btree (snapshot_timestamp)\nKushtet e \u00e7el\u00ebsit t\u00eb huaj:\n    \"database_id_fk\" \u00c7ELSI I HUAJ (database_id) REFERON database(id) N\u00cb FSHIEJ CASCADE<\/pre>\n<p>\nSi\u00e7 shihet, tabela paraqet vet\u00ebm t\u00eb dh\u00ebna kumulative t\u00eb paraqitjes <b>pg_stat_statements <\/b> n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave t\u00eb synuara.<\/p>\n<h3>P\u00ebrdorimi i k\u00ebsaj tabele \u00ebsht\u00eb shum\u00eb i leht\u00eb<\/h3>\n<p>\n<b>pg_stat_history<\/b> do t\u00eb p\u00ebrfaq\u00ebsoj\u00eb statistikat akumuluese t\u00eb ekzekutimit t\u00eb k\u00ebrkesave p\u00ebr \u00e7do or\u00eb. N\u00eb fillim t\u00eb \u00e7do ore, pas mbushjes s\u00eb tabel\u00ebs, statistika <b>pg_stat_statements<\/b> rivendoset me an\u00eb t\u00eb <b>pg_stat_statements_reset()<\/b>.<br \/>\nSh\u00ebnim: <i>statistika mblidhet p\u00ebr k\u00ebrkesat me nj\u00eb koh\u00eb ekzekutimi m\u00eb t\u00eb gjat\u00eb se 1 sekond\u00eb.<\/i><br \/>\n<b class=\"spoiler_title\">Mbushja e tabel\u00ebs pg_stat_history<\/b><\/p>\n<pre><code class=\"plaintext\">--pg_stat_history.sql\nCREATE OR REPLACE FUNCTION pg_stat_history( ) RETURNS boolean AS $$\nDECLARE\n  endpoint_rec record ;\n  database_rec record ;\n  pg_stat_snapshot record ;\n  current_snapshot_timestamp timestamp without time zone;\nBEGIN\n  current_snapshot_timestamp = date_trunc('minute',now());  \n  \n  FOR endpoint_rec IN SELECT * FROM endpoint \n  LOOP\n    FOR database_rec IN SELECT * FROM database WHERE endpoint_id = endpoint_rec.id \n\t  LOOP\n\t    \n\t\tRAISE NOTICE 'PO B\u00cbN T\u00cb KRIJONI N\u00cb SHKODRAT E REJA';\n\t\t\n\t\t--Konektimi me DB-n\u00eb e synuar\t  \n\t    EXECUTE 'SELECT dblink_connect(''LINK1'',''host='||endpoint_rec.host||' dbname='||database_rec.name||' user=USER password=PASSWORD '')';\n \n        RAISE NOTICE 'host % dhe dbname % ',endpoint_rec.host,database_rec.name;\n\t\tRAISE NOTICE 'Krijimi i snapshot-it t\u00eb pg_stat_statements p\u00ebr baz\u00ebn e t\u00eb dh\u00ebnave %',database_rec.name;\n\t\t\n\t\tSELECT \n\t      *\n\t\tINTO \n\t\t  pg_stat_snapshot\n\t    FROM dblink('LINK1',\n\t      'SELECT \n\t       dbid , SUM(calls),SUM(total_time),SUM(rows) ,SUM(shared_blks_hit) ,SUM(shared_blks_read) ,SUM(shared_blks_dirtied) ,SUM(shared_blks_written) , \n           SUM(local_blks_hit) , SUM(local_blks_read) , SUM(local_blks_dirtied) , SUM(local_blks_written) , SUM(temp_blks_read) , SUM(temp_blks_written) , SUM(blk_read_time) , SUM(blk_write_time)\n\t       FROM pg_stat_statements WHERE dbid=(SELECT oid from pg_database where datname=current_database() ) \n\t\t   GROUP BY dbid\n  \t      '\n\t               )\n\t      AS t\n\t       ( dbid oid , calls bigint , \n  \t         total_time double precision , \n\t         rows bigint , shared_blks_hit bigint , shared_blks_read bigint ,shared_blks_dirtied bigint ,shared_blks_written\t bigint ,\n             local_blks_hit\t bigint ,local_blks_read bigint , local_blks_dirtied bigint ,local_blks_written bigint ,\n             temp_blks_read\t bigint ,temp_blks_written bigint ,\n             blk_read_time double precision , blk_write_time double precision\t  \n\t       );\n\t\t \n\t\tINSERT INTO pg_stat_history\n          ( \n\t\t    snapshot_timestamp  ,database_id  ,\n\t\t\tdbid , calls  ,total_time ,\n            rows ,shared_blks_hit  ,shared_blks_read  ,shared_blks_dirtied  ,shared_blks_written ,local_blks_hit , \t \t\n            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, \t\n            blk_read_time, blk_write_time \n\t\t  )\t\t  \n\t    VALUES\n\t      (\n\t       current_snapshot_timestamp ,\n\t\t   database_rec.id ,\n\t       pg_stat_snapshot.dbid ,pg_stat_snapshot.calls,\n\t       pg_stat_snapshot.total_time,\n\t       pg_stat_snapshot.rows ,pg_stat_snapshot.shared_blks_hit ,pg_stat_snapshot.shared_blks_read ,pg_stat_snapshot.shared_blks_dirtied ,pg_stat_snapshot.shared_blks_written , \n           pg_stat_snapshot.local_blks_hit , pg_stat_snapshot.local_blks_read , pg_stat_snapshot.local_blks_dirtied , pg_stat_snapshot.local_blks_written , \n\t       pg_stat_snapshot.temp_blks_read , pg_stat_snapshot.temp_blks_written , pg_stat_snapshot.blk_read_time , pg_stat_snapshot.blk_write_time \t   \n\t      );\t\t   \n\t\t  \n        RAISE NOTICE 'Krijimi i snapshot-it t\u00eb pg_stat_statements p\u00ebr pyetjet me min_time m\u00eb shum\u00eb se 1000ms';\n\t\n        FOR pg_stat_snapshot IN\n          --T\u00eb gjitha pyetjet me max_time m\u00eb shum\u00eb se 1000 ms\n\t      SELECT \n\t        *\n\t      FROM dblink('LINK1',\n\t        'SELECT \n\t         dbid , userid ,queryid,query,calls,total_time,min_time ,max_time,mean_time, stddev_time ,rows ,shared_blks_hit ,\n\t\t\t shared_blks_read ,shared_blks_dirtied ,shared_blks_written , \n             local_blks_hit , local_blks_read , local_blks_dirtied , \n\t\t\t local_blks_written , temp_blks_read , temp_blks_written , blk_read_time , \n\t\t\t blk_write_time\n\t         FROM pg_stat_statements \n\t\t\t WHERE dbid=(SELECT oid from pg_database where datname=current_database() AND min_time &gt;= 1000 ) \n  \t        '\n\n\t                  )\n\t        AS t\n\t         ( dbid oid , userid oid , queryid bigint ,query text , calls bigint , \n  \t           total_time double precision ,min_time double precision\t ,max_time double precision\t , mean_time double precision\t ,  stddev_time double precision\t , \n\t           rows bigint , shared_blks_hit bigint , shared_blks_read bigint ,shared_blks_dirtied bigint ,shared_blks_written\t bigint ,\n               local_blks_hit\t bigint ,local_blks_read bigint , local_blks_dirtied bigint ,local_blks_written bigint ,\n               temp_blks_read\t bigint ,temp_blks_written bigint ,\n               blk_read_time double precision , blk_write_time double precision\t  \n\t         )\n\t    LOOP\n\t\t  INSERT INTO pg_stat_history\n          ( \n\t\t    snapshot_timestamp  ,database_id  ,\n\t\t\tdbid ,userid  , queryid  , query  , calls  ,total_time ,min_time ,max_time ,mean_time ,stddev_time ,\n            rows ,shared_blks_hit  ,shared_blks_read  ,shared_blks_dirtied  ,shared_blks_written ,local_blks_hit , \t \t\n            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, \t\n            blk_read_time, blk_write_time \n\t\t  )\t\t  \n\t      VALUES\n\t      (\n\t       current_snapshot_timestamp ,\n\t\t   database_rec.id ,\n\t       pg_stat_snapshot.dbid ,pg_stat_snapshot.userid ,pg_stat_snapshot.queryid,pg_stat_snapshot.query,pg_stat_snapshot.calls,\n\t       pg_stat_snapshot.total_time,pg_stat_snapshot.min_time ,pg_stat_snapshot.max_time,pg_stat_snapshot.mean_time, pg_stat_snapshot.stddev_time ,\n\t       pg_stat_snapshot.rows ,pg_stat_snapshot.shared_blks_hit ,pg_stat_snapshot.shared_blks_read ,pg_stat_snapshot.shared_blks_dirtied ,pg_stat_snapshot.shared_blks_written , \n           pg_stat_snapshot.local_blks_hit , pg_stat_snapshot.local_blks_read , pg_stat_snapshot.local_blks_dirtied , pg_stat_snapshot.local_blks_written , \n\t       pg_stat_snapshot.temp_blks_read , pg_stat_snapshot.temp_blks_written , pg_stat_snapshot.blk_read_time , pg_stat_snapshot.blk_write_time \t   \n\t      );\n\t\t  \n        END LOOP;\n\n        PERFORM dblink_disconnect('LINK1');  \n\t\t\t\t\n\t  END LOOP ;--FOR database_rec IN SELECT * FROM database WHERE endpoint_id = endpoint_rec.id \n    \n  END LOOP;\n\nRETURN TRUE;  \nEND\n$$ LANGUAGE plpgsql;<\/code><\/pre>\n<p>Si pas nj\u00eb periudh\u00eb t\u00eb caktuar kohe n\u00eb tabel\u00eb <b>pg_stat_history<\/b> do t\u00eb kemi nj\u00eb set fotografish t\u00eb p\u00ebrmbajtjes s\u00eb tabel\u00ebs <b>pg_stat_statements <\/b>t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave t\u00eb synuar. <\/p>\n<h2>N\u00eb thelb raportimi<\/h2>\n<p>\nDuke p\u00ebrdorur k\u00ebrkesa t\u00eb thjeshta, mund t\u00eb merret raporti mjaft i dobish\u00ebm dhe interesant.<\/p>\n<h2>T\u00eb dh\u00ebna t\u00eb p\u00ebrmbledhura p\u00ebr nj\u00eb periudh\u00eb t\u00eb caktuar kohore<\/h2>\n<p><b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"plaintext\">SELECT \n  database_id , \n  SUM(calls) AS calls ,SUM(total_time)  AS total_time ,\n  SUM(rows) AS rows , SUM(shared_blks_hit)  AS shared_blks_hit,\n  SUM(shared_blks_read) AS shared_blks_read ,\n  SUM(shared_blks_dirtied) AS shared_blks_dirtied,\n  SUM(shared_blks_written) AS shared_blks_written , \n  SUM(local_blks_hit) AS local_blks_hit , \n  SUM(local_blks_read) AS local_blks_read , \n  SUM(local_blks_dirtied) AS local_blks_dirtied , \n  SUM(local_blks_written)  AS local_blks_written,\n  SUM(temp_blks_read) AS temp_blks_read, \n  SUM(temp_blks_written) temp_blks_written , \n  SUM(blk_read_time) AS blk_read_time , \n  SUM(blk_write_time) AS blk_write_time\nFROM \n  pg_stat_history\nWHERE \n  queryid IS NULL AND\n  database_id = DATABASE_ID  AND\n  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT\nGROUP BY database_id ;<\/code><\/pre>\n<p><\/p>\n<h4>Koha DB<\/h4>\n<blockquote><p>to_char(interval &#8216;1 millisecond&#8217; * pg_total_stat_history_rec.total_time, &#8216;HH24:MI:SS.MS&#8217;)<\/p><\/blockquote>\n<p><\/p>\n<h4>Koha I\/O<\/h4>\n<blockquote><p>to_char(interval &#8216;1 millisecond&#8217; * ( pg_total_stat_history_rec.blk_read_time + pg_total_stat_history_rec.blk_write_time ), &#8216;HH24:MI:SS.MS&#8217;)<\/p><\/blockquote>\n<h3>TOP10 SQL sipas total_time<\/h3>\n<p><b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"plaintext\">SELECT \n  queryid , \n  SUM(calls) AS calls ,\n  SUM(total_time)  AS total_time  \t\nFROM \n  pg_stat_history\nWHERE \n  queryid IS NOT NULL AND \n  database_id = DATABASE_ID AND\n  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT \nGROUP BY queryid \nORDER BY 3 DESC \nLIMIT 10<\/code><\/pre>\n<pre>-------------------------------------------------------------------------------------\n| TOP10 SQL NGA KOHA TOTAL TEKSTIM\n|   #|    queryid|      thirrje|    thirrje %|                koha_totale (ms) |  dbtime %\n+----+-----------+-----------+-----------+--------------------------------+----------\n|   1|  821760255|          2|     .00001|00:03:23.141(    203141.681 ms.)|      5.42\n|   2| 4152624390|          2|     .00001|00:03:13.929(    193929.215 ms.)|      5.17\n|   3| 1484454471|          4|     .00001|00:02:09.129(    129129.057 ms.)|      3.44\n|   4|  655729273|          1|     .00000|00:02:01.869(    121869.981 ms.)|      3.25\n|   5| 2460318461|          1|     .00000|00:01:33.113(     93113.835 ms.)|      2.48\n|   6| 2194493487|          4|     .00001|00:00:17.377(     17377.868 ms.)|       .46\n|   7| 1053044345|          1|     .00000|00:00:06.156(      6156.352 ms.)|       .16\n|   8| 3644780286|          1|     .00000|00:00:01.063(      1063.830 ms.)|       .03\n<\/pre>\n<h4>TOP10 SQL nga koha totale I\/O<\/h4>\n<p><b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"plaintext\">SELECT \n  queryid , \n  SUM(thirrje) AS thirrje ,\n  SUM(blk_read_time + blk_write_time)  AS koha_io\nFROM \n  pg_stat_history\nWHERE \n  queryid IS NOT NULL AND \n  database_id = DATABASE_ID  AND\n  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT\nGROUP BY  queryid \nORDER BY 3 DESC \nLIMIT 10<\/code><\/pre>\n<pre>----------------------------------------------------------------------------------------\n| TOP10 SQL NGA KOHA TOTAL I\/O\n|   #|    queryid|      calls|    calls %|                   Koha I\/O (ms)|p\u00ebrqindja e Koha I\/O\n+----+-----------+-----------+-----------+--------------------------------+-------------\n|   1| 4152624390|          2|     .00001|00:08:31.616(    511616.592 ms.)|        31.06\n|   2|  821760255|          2|     .00001|00:08:27.099(    507099.036 ms.)|        30.78\n|   3|  655729273|          1|     .00000|00:05:02.209(    302209.137 ms.)|        18.35\n|   4| 2460318461|          1|     .00000|00:04:05.981(    245981.117 ms.)|        14.93\n|   5| 1484454471|          4|     .00001|00:00:39.144(     39144.221 ms.)|         2.38\n|   6| 2194493487|          4|     .00001|00:00:18.182(     18182.816 ms.)|         1.10\n|   7| 1053044345|          1|     .00000|00:00:16.611(     16611.722 ms.)|         1.01\n|   8| 3644780286|          1|     .00000|00:00:00.436(       436.205 ms.)|          .03\n<\/pre>\n<h4>TOP10 SQL sipas koh\u00ebs maksimale t\u00eb ekzekutimit<\/h4>\n<p><b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"plaintext\">Zgjidh \n  id AS snapshotid , \n  queryid , \n  snapshot_timestamp ,  \n  max_time \nFROM \n  pg_stat_history \nWHERE \n  queryid IS NOT NULL AND \n  database_id = DATABASE_ID  AND\n  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT\nORDER BY 4 DESC \nLIMIT 10<\/code><\/pre>\n<p><\/p>\n<pre>-----------------------------------------------------------------------------------------\n| TOP10 SQL NGA KOHA MAKSIMALE T\u00cb EKZEKUTIMIT\n|   #|          snapshot| snapshotID|    queryid|                           max_time (ms)\n+----+------------------+-----------+-----------+----------------------------------------\n|   1|  05.04.2019 01:03|       4169|  655729273|        00:02:01.869(    121869.981 ms.)\n|   2|  04.04.2019 17:00|       4153|  821760255|        00:01:41.570(    101570.841 ms.)\n|   3|  04.04.2019 16:00|       4146|  821760255|        00:01:41.570(    101570.841 ms.)\n|   4|  04.04.2019 16:00|       4144| 4152624390|        00:01:36.964(     96964.607 ms.)\n|   5|  04.04.2019 17:00|       4151| 4152624390|        00:01:36.964(     96964.607 ms.)\n|   6|  05.04.2019 10:00|       4188| 1484454471|        00:01:33.452(     93452.150 ms.)\n|   7|  04.04.2019 17:00|       4150| 2460318461|        00:01:33.113(     93113.835 ms.)\n|   8|  04.04.2019 15:00|       4140| 1484454471|        00:00:11.892(     11892.302 ms.)\n|   9|  04.04.2019 16:00|       4145| 1484454471|        00:00:11.892(     11892.302 ms.)\n|  10|  04.04.2019 17:00|       4152| 1484454471|        00:00:11.892(     11892.302 ms.)\n<\/pre>\n<h4>TOP10 SQL nga L\u00cbNGU i ndar\u00eb i leximit\/shkruarjes<\/h4>\n<p><b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"plaintext\">SELECT \n  id AS snapshotid , \n  queryid ,\n  snapshot_timestamp , \n  shared_blks_read , \n  shared_blks_written \nFROM \n  pg_stat_history\nWHERE \n  queryid IS NOT NULL AND \n  database_id = DATABASE_ID  AND\n  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND\n  ( shared_blks_read &gt; 0 OR shared_blks_written &gt; 0 )\nORDER BY 4 DESC  , 5 DESC \nLIMIT 10<\/code><\/pre>\n<pre>--------------------------------------------------------------------------------------------\n| TOP10 SQL NGA KRIJESIN E SHPERNDARJES PER LETRAT E NDARJE\/SHKRIM\n|   #|          snapshot| snapshotID|    queryid|   blloqet e ndara|  blloqet e shkrimit\n+----+------------------+-----------+-----------+---------------------+---------------------\n|   1|  04.04.2019 17:00|       4153|  821760255|               797308|                    0\n|   2|  04.04.2019 16:00|       4146|  821760255|               797308|                    0\n|   3|  05.04.2019 01:03|       4169|  655729273|               797158|                    0\n|   4|  04.04.2019 16:00|       4144| 4152624390|               756514|                    0\n|   5|  04.04.2019 17:00|       4151| 4152624390|               756514|                    0\n|   6|  04.04.2019 17:00|       4150| 2460318461|               734117|                    0\n|   7|  04.04.2019 17:00|       4155| 3644780286|                52973|                    0\n|   8|  05.04.2019 01:03|       4168| 1053044345|                52818|                    0\n|   9|  04.04.2019 15:00|       4141| 2194493487|                52813|                    0\n|  10|  04.04.2019 16:00|       4147| 2194493487|                52813|                    0\n--------------------------------------------------------------------------------------------\n<\/pre>\n<h4>Histograma e shp\u00ebrndarjes s\u00eb k\u00ebrkesave sipas koh\u00ebs maksimale t\u00eb ekzekutimit<\/h4>\n<p><b class=\"spoiler_title\">K\u00ebrkesat<\/b><\/p>\n<pre><code class=\"plaintext\">Zgjedhni  \n  MIN(max_time) AS hist_min  , \n  MAX(max_time) AS hist_max , \n  (( MAX(max_time) - MIN(min_time) ) \/ hist_columns ) si hist_width\nnga  \n  pg_stat_history \nku  \n  queryid NUK \u00ebsht\u00eb NULL DHE\n  database_id = DATABASE_ID  DHE\n  snapshot_timestamp N\u00cb MES T\u00cb BEGIN_TIMEPOINT DHE END_TIMEPOINT ;\n\nZgjedhni \n  SUM(calls) AS calls\nnga \n  pg_stat_history \nku  \n  queryid NUK \u00ebsht\u00eb NULL DHE\n  database_id =DATABASE_ID  DHE\n  snapshot_timestamp N\u00cb MES T\u00cb BEGIN_TIMEPOINT DHE END_TIMEPOINT DHE \n  ( max_time &gt;= hist_current_min DHE  max_time &lt; hist_current_max ) ;\n<\/code><\/pre>\n<pre>|-----------------------------------------------------------------------------------------------\n| HISTOGRAMI I MAX_TIME\n| CALLS TOTAL : 33851920\n| KOHA MINIMALE  : 00:00:01.063\n| KOHA MAKSIMALE  : 00:02:01.869\n---------------------------------------------------------------------------------\n|                      min durata|                      max durata|     calls\n+----------------------------------+----------------------------------+----------\n| 00:00:01.063(      1063.830 ms.) | 00:00:13.144(     13144.445 ms.) | 9\n| 00:00:13.144(     13144.445 ms.) | 00:00:25.225(     25225.060 ms.) | 0\n| 00:00:25.225(     25225.060 ms.) | 00:00:37.305(     37305.675 ms.) | 0\n| 00:00:37.305(     37305.675 ms.) | 00:00:49.386(     49386.290 ms.) | 0\n| 00:00:49.386(     49386.290 ms.) | 00:01:01.466(     61466.906 ms.) | 0\n| 00:01:01.466(     61466.906 ms.) | 00:01:13.547(     73547.521 ms.) | 0\n| 00:01:13.547(     73547.521 ms.) | 00:01:25.628(     85628.136 ms.) | 0\n| 00:01:25.628(     85628.136 ms.) | 00:01:37.708(     97708.751 ms.) | 4\n| 00:01:37.708(     97708.751 ms.) | 00:01:49.789(    109789.366 ms.) | 2\n| 00:01:49.789(    109789.366 ms.) | 00:02:01.869(    121869.981 ms.) | 0\n<\/pre>\n<h4>TOP10 Snapshotet sipas K\u00ebrkimeve p\u00ebr Sekond\u00eb<\/h4>\n<p><b class=\"spoiler_title\">K\u00ebrkesat<\/b><\/p>\n<pre><code class=\"plaintext\">--pg_qps.sql\n--Llogarit Query p\u00ebr Sekond\u00eb \nCREATE OR REPLACE FUNCTION pg_qps( pg_stat_history_id integer ) RETURNS double precision AS $$\nDECLARE\n pg_stat_history_rec record ;\n prev_pg_stat_history_id integer ;\n prev_pg_stat_history_rec record;\n total_seconds double precision ;\n result double precision;\nBEGIN \n  result = 0 ;\n  \n  SELECT *\n  INTO pg_stat_history_rec\n  FROM \n    pg_stat_history\n  WHERE id = pg_stat_history_id ;\n\n  IF pg_stat_history_rec.snapshot_timestamp IS NULL \n  THEN\n    RAISE EXCEPTION 'ERROR - Nuk u gjet pg_stat_history p\u00ebr id = %',pg_stat_history_id;\n  END IF ;  \n  \n --RAISE NOTICE 'pg_stat_history_id = % , snapshot_timestamp = %', pg_stat_history_id , \n pg_stat_history_rec.snapshot_timestamp ;\n  \n  SELECT \n    MAX(id)   \n  INTO\n    prev_pg_stat_history_id\n  FROM\n    pg_stat_history\n  WHERE \n    database_id = pg_stat_history_rec.database_id AND\n\tqueryid IS NULL AND\n\tid  0 \n  THEN\n    result = pg_stat_history_rec.calls \/ total_seconds ;\n  ELSE\n   result = 0 ; \n  END IF;\n   \n RETURN result ;\nEND\n$$ LANGUAGE plpgsql;\n\n\nSELECT \n  id , \n  snapshot_timestamp ,\n  calls , \t\n  total_time , \n  ( select pg_qps( id )) AS QPS ,\n  blk_read_time ,\n  blk_write_time\nFROM \n  pg_stat_history\nWHERE \n  queryid IS NULL AND \n  database_id = DATABASE_ID  AND\n  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT AND\n  ( select pg_qps( id )) IS NOT NULL \nORDER BY 5 DESC \nLIMIT 10\n<\/code><\/pre>\n<pre>|-----------------------------------------------------------------------------------------------\n| TOP10 Snapshotet t\u00eb renditur sipas numrit t\u00eb PyetjeP\u00ebrSekund\u00eb\n-----------------------------------------------------------------------------------------------------------------------------------------------\n|    #|          snapshot| snapshotID|      calls|                      total dbtime|        QPS|                          I\/O time| I\/O time %\n+-----+------------------+-----------+-----------+----------------------------------+-----------+----------------------------------+-----------\n|    1|  04.04.2019 20:04|       4161|    5758631|  00:06:30.513(    390513.926 ms.)|   1573.396|  00:00:01.470(      1470.110 ms.)|       .376\n|    2|  04.04.2019 17:00|       4149|    3529197|  00:11:48.830(    708830.618 ms.)|    980.332|  00:12:47.834(    767834.052 ms.)|    108.324\n|    3|  04.04.2019 16:00|       4143|    3525360|  00:10:13.492(    613492.351 ms.)|    979.267|  00:08:41.396(    521396.555 ms.)|     84.988\n|    4|  04.04.2019 21:03|       4163|    2781536|  00:03:06.470(    186470.979 ms.)|    785.745|  00:00:00.249(       249.865 ms.)|       .134\n|    5|  04.04.2019 19:03|       4159|    2890362|  00:03:16.784(    196784.755 ms.)|    776.979|  00:00:01.441(      1441.386 ms.)|       .732\n|    6|  04.04.2019 14:00|       4137|    2397326|  00:04:43.033(    283033.854 ms.)|    665.924|  00:00:00.024(        24.505 ms.)|       .009\n|    7|  04.04.2019 15:00|       4139|    2394416|  00:04:51.435(    291435.010 ms.)|    665.116|  00:00:12.025(     12025.895 ms.)|      4.126\n|    8|  04.04.2019 13:00|       4135|    2373043|  00:04:26.791(    266791.988 ms.)|    659.179|  00:00:00.064(        64.261 ms.)|       .024\n|    9|  05.04.2019 01:03|       4167|    4387191|  00:06:51.380(    411380.293 ms.)|    609.332|  00:05:18.847(    318847.407 ms.)|     77.507\n|   10|  04.04.2019 18:01|       4157|    1145596|  00:01:19.217(     79217.372 ms.)|    313.004|  00:00:01.319(      1319.676 ms.)|      1.666\n<\/pre>\n<h4>Historiku i Ekzekutimit me Orar me QueryPerSeconds dhe Koha I\/O<\/h4>\n<p><b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"plaintext\">Zgjidhni \n  id , \n  snapshot_timestamp ,\n  calls , \t\n  total_time , \n  ( zgjidhni pg_qps( id )) SI QPS ,\n  blk_read_time ,\n  blk_write_time\nFROM \n  pg_stat_history\nKU \n  queryid \u00cbSHT\u00cb NULL DHE \n  database_id = DATABASE_ID  DHE\n  snapshot_timestamp ND\u00cbRMIJET BEGIN_TIMEPOINT DHE END_TIMEPOINT\nSHTOJN\u00cb 2\n<\/code><\/pre>\n<pre>|-----------------------------------------------------------------------------------------------\n| HISTORI I EKZEKUTIMIT N\u00cb ORA ME QueryPerSeconds dhe Koh\u00eb I\/O\n-----------------------------------------------------------------------------------------------------------------------------------------------\n| HISTORIA E K\u00cbRKESAVE P\u00cbR SEKOND\n|    #|          snapshot| snapshotID|      calls|                      total dbtime|        QPS|                          I\/O time| I\/O time %\n+-----+------------------+-----------+-----------+----------------------------------+-----------+----------------------------------+-----------\n|    1|  04.04.2019 11:00|       4131|       3747|  00:00:00.835(       835.374 ms.)|      1.041|  00:00:00.000(          .000 ms.)|       .000\n|    2|  04.04.2019 12:00|       4133|    1002722|  00:01:52.419(    112419.376 ms.)|    278.534|  00:00:00.149(       149.105 ms.)|       .133\n|    3|  04.04.2019 13:00|       4135|    2373043|  00:04:26.791(    266791.988 ms.)|    659.179|  00:00:00.064(        64.261 ms.)|       .024\n|    4|  04.04.2019 14:00|       4137|    2397326|  00:04:43.033(    283033.854 ms.)|    665.924|  00:00:00.024(        24.505 ms.)|       .009\n|    5|  04.04.2019 15:00|       4139|    2394416|  00:04:51.435(    291435.010 ms.)|    665.116|  00:00:12.025(     12025.895 ms.)|      4.126\n|    6|  04.04.2019 16:00|       4143|    3525360|  00:10:13.492(    613492.351 ms.)|    979.267|  00:08:41.396(    521396.555 ms.)|     84.988\n|    7|  04.04.2019 17:00|       4149|    3529197|  00:11:48.830(    708830.618 ms.)|    980.332|  00:12:47.834(    767834.052 ms.)|    108.324\n|    8|  04.04.2019 18:01|       4157|    1145596|  00:01:19.217(     79217.372 ms.)|    313.004|  00:00:01.319(      1319.676 ms.)|      1.666\n|    9|  04.04.2019 19:03|       4159|    2890362|  00:03:16.784(    196784.755 ms.)|    776.979|  00:00:01.441(      1441.386 ms.)|       .732\n|   10|  04.04.2019 20:04|       4161|    5758631|  00:06:30.513(    390513.926 ms.)|   1573.396|  00:00:01.470(      1470.110 ms.)|       .376\n|   11|  04.04.2019 21:03|       4163|    2781536|  00:03:06.470(    186470.979 ms.)|    785.745|  00:00:00.249(       249.865 ms.)|       .134\n|   12|  04.04.2019 23:03|       4165|    1443155|  00:01:34.467(     94467.539 ms.)|    200.438|  00:00:00.015(        15.287 ms.)|       .016\n|   13|  05.04.2019 01:03|       4167|    4387191|  00:06:51.380(    411380.293 ms.)|    609.332|  00:05:18.847(    318847.407 ms.)|     77.507\n|   14|  05.04.2019 02:03|       4171|     189852|  00:00:10.989(     10989.899 ms.)|     52.737|  00:00:00.539(       539.110 ms.)|      4.906\n|   15|  05.04.2019 03:01|       4173|       3627|  00:00:00.103(       103.000 ms.)|      1.042|  00:00:00.004(         4.131 ms.)|      4.010\n|   16|  05.04.2019 04:00|       4175|       3627|  00:00:00.085(        85.235 ms.)|      1.025|  00:00:00.003(         3.811 ms.)|      4.471\n|   17|  05.04.2019 05:00|       4177|       3747|  00:00:00.849(       849.454 ms.)|      1.041|  00:00:00.006(         6.124 ms.)|       .721\n|   18|  05.04.2019 06:00|       4179|       3747|  00:00:00.849(       849.561 ms.)|      1.041|  00:00:00.000(          .051 ms.)|       .006\n|   19|  05.04.2019 07:00|       4181|       3747|  00:00:00.839(       839.416 ms.)|      1.041|  00:00:00.000(          .062 ms.)|       .007\n|   20|  05.04.2019 08:00|       4183|       3747|  00:00:00.846(       846.382 ms.)|      1.041|  00:00:00.000(          .007 ms.)|       .001\n|   21|  05.04.2019 09:00|       4185|       3747|  00:00:00.855(       855.426 ms.)|      1.041|  00:00:00.000(          .065 ms.)|       .008\n|   22|  05.04.2019 10:00|       4187|       3797|  00:01:40.150(    100150.165 ms.)|      1.055|  00:00:21.845(     21845.217 ms.)|     21.812\n<\/pre>\n<h4>Teksti i t\u00eb gjitha SQL-selekt\u00ebve<\/h4>\n<p><b class=\"spoiler_title\">K\u00ebrkes\u00eb<\/b><\/p>\n<pre><code class=\"plaintext\">SELECT \n  queryid , \n  query \nFROM \n  pg_stat_history\nWHERE \n  queryid IS NOT NULL AND \n  database_id = DATABASE_ID  AND\n  snapshot_timestamp BETWEEN BEGIN_TIMEPOINT AND END_TIMEPOINT\nGROUP BY queryid , query\n<\/code><\/pre>\n<h2>P\u00ebrfundimi<\/h2>\n<p>\nSi\u00e7 shihet, me mjete mjaft t\u00eb thjeshta, mund t\u00eb merrni nj\u00eb sasi t\u00eb madhe informacioni t\u00eb dobish\u00ebm mbi ngarkes\u00ebn dhe gjendjen e baz\u00ebs. <\/p>\n<p><b>Sh\u00ebnim:<\/b>N\u00ebse n\u00eb k\u00ebrkesa regjistrojm\u00eb queryid, do t\u00eb marrim historin\u00eb p\u00ebr k\u00ebrkes\u00ebn e ve\u00e7ant\u00eb (p\u00ebr t\u00eb kursyer hap\u00ebsir\u00eb, raporte p\u00ebr k\u00ebrkesa t\u00eb ve\u00e7anta jan\u00eb l\u00ebna jasht\u00eb).<\/p>\n<p>Pra, jan\u00eb t\u00eb disponueshme dhe po mblidhen t\u00eb dh\u00ebnat statistikore mbi performanc\u00ebn e k\u00ebrkesave.<br \/>\nFaza e par\u00eb \u00abmbledhja e t\u00eb dh\u00ebnave statistikore\u00bb \u2014 \u00ebsht\u00eb p\u00ebrfunduar.<\/p>\n<p>Tani mund t\u00eb kalojm\u00eb n\u00eb faz\u00ebn e dyt\u00eb - \u00abkonfigurimi i metrikeve t\u00eb performanc\u00ebs\u00bb.<br \/>\n<img decoding=\"async\" alt=\"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 \u2014 raportimi.\" src=\"\/wp-content\/uploads\/2019\/04\/a893e49280d4cb425e4667a5c51d2397.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>Por kjo \u00ebsht\u00eb nj\u00eb histori krejt tjet\u00ebr.<\/b><\/p>\n<p><i>Vazhdon\u2026<\/i><br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/icl_services\/blog\/446734\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u2014 \u0432 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0441 \u043b\u0430\u0442\u044b\u043d\u0438 \u2014 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439. \u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0451. (\u0441) \u0420.\u0414\u0438\u0437\u0435\u043b\u044c. \u042d\u043f\u0438\u0433\u0440\u0430\u0444\u044b. \u0418\u043b\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u0437\u0430\u0447\u0435\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0435. \u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 \u0412\u0441\u0435 \u0438\u043c\u0435\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b. \u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438\u0447\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. Disclaimer of warranties: \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24168,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32353","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=\"\u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u2014 \u0432 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0441 \u043b\u0430\u0442\u044b\u043d\u0438 \u2014 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439. \u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0451. (\u0441) \u0420.\u0414\u0438\u0437\u0435\u043b\u044c. \u042d\u043f\u0438\u0433\u0440\u0430\u0444\u044b. \u0418\u043b\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u0437\u0430\u0447\u0435\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0435. \u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 \u0412\u0441\u0435 \u0438\u043c\u0435\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b. \u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438\u0447\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. Disclaimer of warranties: \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \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\/monitoring-proizvoditelnosti-zaprosov-postgresql-chast-1-reporting\" \/>\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\udd47\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 PostgreSQL. \u0427\u0430\u0441\u0442\u044c 1 \u2014 \u0440\u0435\u043f\u043e\u0440\u0442\u0438\u043d\u0433 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u2014 \u0432 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0441 \u043b\u0430\u0442\u044b\u043d\u0438 \u2014 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439. \u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0451. (\u0441) \u0420.\u0414\u0438\u0437\u0435\u043b\u044c. \u042d\u043f\u0438\u0433\u0440\u0430\u0444\u044b. \u0418\u043b\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u0437\u0430\u0447\u0435\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0435. \u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 \u0412\u0441\u0435 \u0438\u043c\u0435\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b. \u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438\u0447\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. Disclaimer of warranties: \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/monitoring-proizvoditelnosti-zaprosov-postgresql-chast-1-reporting\" \/>\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-31T18:46:32+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:32+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\udd47Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 \u2014 raportimi | ProHoster","description":"Inxhinier \u2014 n\u00eb p\u00ebrkthim nga latinishtja \u2014 \u00ebsht\u00eb i frym\u00ebzuar. Inxhinieri mund t\u00eb b\u00ebj\u00eb gjith\u00e7ka. (c) R.Dizel. Epigrifet. Ose nj\u00eb histori p\u00ebrse nj\u00eb administrator baze t\u00eb dh\u00ebnash duhet t\u00eb kujtoj\u00eb t\u00eb kaluar\u00ebn e tij si programues. Parath\u00ebnie T\u00eb gjitha emrat jan\u00eb ndryshuar. P\u00ebrputhjet jan\u00eb rast\u00ebsore. Materiali \u00ebsht\u00eb ekskluzivisht mendimi personal i autorit. Mohimi i garantive: n\u00eb ciklin e planifikuar t\u00eb artikujve nuk do t\u00eb ket\u00eb p\u00ebrshkrim t\u00eb detajuar dhe t\u00eb sakt\u00eb t\u00eb tabelave t\u00eb p\u00ebrdorura dhe","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/monitoring-proizvoditelnosti-zaprosov-postgresql-chast-1-reporting","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\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 PostgreSQL. \u0427\u0430\u0441\u0442\u044c 1 \u2014 \u0440\u0435\u043f\u043e\u0440\u0442\u0438\u043d\u0433 | ProHoster","og:description":"\u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u2014 \u0432 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u0441 \u043b\u0430\u0442\u044b\u043d\u0438 \u2014 \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u0435\u043d\u043d\u044b\u0439. \u0418\u043d\u0436\u0435\u043d\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0432\u0441\u0451. (\u0441) \u0420.\u0414\u0438\u0437\u0435\u043b\u044c. \u042d\u043f\u0438\u0433\u0440\u0430\u0444\u044b. \u0418\u043b\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043e \u0442\u043e\u043c, \u0437\u0430\u0447\u0435\u043c \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443 \u0431\u0430\u0437 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0441\u043a\u043e\u0435 \u043f\u0440\u043e\u0448\u043b\u043e\u0435. \u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435 \u0412\u0441\u0435 \u0438\u043c\u0435\u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b. \u0421\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b. \u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043b\u0438\u0447\u043d\u043e\u0435 \u043c\u043d\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u0440\u0430. Disclaimer of warranties: \u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u043c\u043e\u043c \u0446\u0438\u043a\u043b\u0435 \u0441\u0442\u0430\u0442\u0435\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0433\u043e \u0438 \u0442\u043e\u0447\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u0438","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/monitoring-proizvoditelnosti-zaprosov-postgresql-chast-1-reporting","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-31T18:46:32+00:00","article:modified_time":"2019-10-31T18:46:32+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32353","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-21 10:28:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:13:42","updated":"2026-01-21 10:28: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\/32353","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=32353"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/32353\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/24168"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=32353"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=32353"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=32353"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}