{"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 - raportimi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Inxhinieri \u2013 n\u00eb p\u00ebrkthim nga latinishtja \u2013 i frym\u00ebzuar.<br \/>\nInxhinieri mund t\u00eb b\u00ebj\u00eb gjith\u00e7ka. (c) R.Dizel.<br \/>\n<i>Epigrafet.<\/i><br \/>\n<img decoding=\"async\" alt=\"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 - raportimi\" src=\"\/wp-content\/uploads\/2019\/04\/9a2640267ea05006b94e03642b864ddc.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ose historia se pse nj\u00eb administrator i baz\u00ebs s\u00eb t\u00eb dh\u00ebnave 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 ndryshuar. P\u00ebrputhjet jan\u00eb rast\u00ebsore. Materiali \u00ebsht\u00eb nj\u00eb mendim krejt\u00ebsisht personal i autorit.<\/p>\n<blockquote><p><b>Shk\u00ebputja e garancive:<\/b> <i>n\u00eb ciklin e planifikuar t\u00eb artikujve nuk do t\u00eb ket\u00eb p\u00ebrshkrime t\u00eb holl\u00ebsishme dhe t\u00eb sakta t\u00eb tavolinave dhe skripteve t\u00eb p\u00ebrdorura. Materialet nuk do t\u00eb mund t\u00eb p\u00ebrdoren menj\u00ebher\u00eb \"AS IS\". <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 n\u00eb baz\u00ebn reale t\u00eb prodhimit t\u00eb klientit. <br \/>\nPrandaj, n\u00eb artikuj do t\u00eb jepen vet\u00ebm ide dhe p\u00ebrshkrime n\u00eb m\u00ebnyr\u00eb shum\u00eb t\u00eb p\u00ebrgjithshme. <br \/>\nMund t\u00eb jet\u00eb q\u00eb n\u00eb t\u00eb ardhmen sistemi do t\u00eb arrij\u00eb n\u00eb nivelin e publikimit n\u00eb GitHub, ndoshta dhe 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 se si filloi gjith\u00e7ka<\/a><\/noindex>\u00bb.<br \/>\n\u00c7far\u00eb doli si rezultat, n\u00eb p\u00ebrmbledhje - \"<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444988\/\">Sintetizimi si nj\u00eb nga metodat p\u00ebr p\u00ebrmir\u00ebsimin e performanc\u00ebs s\u00eb PostgreSQL<\/a><\/noindex>\u00bb<\/p>\n<h2>Pse m\u00eb nevojitet gjith\u00eb kjo?<\/h2>\n<p>\nE para, p\u00ebr t\u00eb mos harruar vet\u00eb, duke p\u00ebrmenduar dit\u00ebt e lavdishme n\u00eb pension. <br \/>\nE dyta, p\u00ebr t\u00eb sistematizuar at\u00eb q\u00eb kam shkruar. Sepse ndonj\u00ebher\u00eb filloj t\u00eb humb dhe harroj pjes\u00eb t\u00eb ve\u00e7anta. <\/p>\n<p>Dhe e r\u00ebnd\u00ebsishmja \u2013 ndoshta dikujt mund t'i ndihmoj\u00eb dhe t'i propozoj\u00eb nj\u00eb zgjidhje p\u00ebr t\u00eb mos shpikur bi\u00e7ikleta dhe p\u00ebr t\u00eb mos mbledhur g\u00ebrsh\u00ebr\u00eb. T\u00eb tjerat, n\u00eb fjal\u00eb, t\u00eb p\u00ebrmir\u00ebsojn\u00eb karma e tij (jo t\u00eb Habrave). 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 gjesh iden\u00eb. Nd\u00ebrsa ta realizosh iden\u00eb n\u00eb realitet \u00ebsht\u00eb nj\u00eb \u00e7\u00ebshtje krejt\u00ebsisht teknike.<\/p>\n<p>Pra, le t\u00eb fillojm\u00eb, ngadal\u00eb...<\/p>\n<h2>V\u00ebnia n\u00eb praktik\u00eb e detyr\u00ebs.<\/h2>\n<p><\/p>\n<h3>Disponohet: <\/h3>\n<p>\nBaza e t\u00eb dh\u00ebnave PostgreSQL (10.5), tip i ngarkes\u00ebs s\u00eb p\u00ebrzier (OLTP+DSS), mesatarisht-e vog\u00ebl e ngarkes\u00ebs, e vendosur n\u00eb cloud AWS. <br \/>\nMonitorimi i baz\u00ebs s\u00eb t\u00eb dh\u00ebnave mungon, monitorimi i infrastruktur\u00ebs paraqitet n\u00eb form\u00ebn e mjeteve standarde AWS n\u00eb konfigurimin minimal.<\/p>\n<h3>K\u00ebrkohet:<\/h3>\n<p>\nT\u00eb monitoroj\u00eb performanc\u00ebn dhe gjendjen e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave, t\u00eb gjej\u00eb dhe t\u00eb ket\u00eb informacion fillestar p\u00ebr optimizimin e k\u00ebrkesave t\u00eb r\u00ebnda ndaj BDs.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Nj\u00eb shkurtim parafol\u00ebs ose analiz\u00eb e mund\u00ebsive t\u00eb zgjidhjes<\/h2>\n<p>\nFillimisht, le t\u00eb shqyrtojm\u00eb mund\u00ebsit\u00eb e zgjidhjes s\u00eb detyr\u00ebs nga k\u00ebndv\u00ebshtrimi i analiz\u00ebs krahasuese t\u00eb p\u00ebrfitimeve dhe t\u00eb k\u00ebqijave p\u00ebr inxhinierin, nd\u00ebrsa p\u00ebrfitimet dhe humbjet e menaxhmentit le t'u ngelen atyre q\u00eb jan\u00eb t\u00eb caktuar sipas vendimit t\u00eb pun\u00ebs.<\/p>\n<h3>Mund\u00ebsia 1 - \"Punoni sipas k\u00ebrkes\u00ebs\"<\/h3>\n<p>\nL\u00ebvizim 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 me e-mail ose duke krijuar nj\u00eb incident n\u00eb sistemin e biletave. <br \/>\nInxhinieri, pasi merr njoftimin, do t\u00eb shqyrtoj\u00eb problemin, do t\u00eb propozoj\u00eb nj\u00eb zgjidhje, ose do ta shtyj\u00eb problemin n\u00eb koh\u00eb t\u00eb pacaktuar, duke shpresuar se gjith\u00e7ka do t\u00eb zgjidhet vet\u00eb, dhe gjithsesi s\u00eb shpejti do t\u00eb harrohet.<br \/>\n<b class=\"spoiler_title\">Biskota dhe puffa, grimca dhe goditje<\/b><b>Biskota dhe puffa:<\/b><br \/>\n1. Nuk ka nevoj\u00eb t\u00eb b\u00ebni asgj\u00eb t\u00eb panevojshme<br \/>\n2. Gjithmon\u00eb ka mund\u00ebsi p\u00ebr t\u00eb ikur dhe p\u00ebr t\u00eb shmangur pun\u00ebn. <br \/>\n3. Nj\u00eb sasi e madhe kohe, e cila mund t\u00eb shpenzohet sipas d\u00ebshir\u00ebs.<br \/>\n<b>Grimca dhe goditje:<\/b><br \/>\n1. Her\u00ebt apo von\u00eb, klienti do t\u00eb mendoj\u00eb p\u00ebr esenc\u00ebn e ekzistenc\u00ebs dhe drejt\u00ebsin\u00eb universale n\u00eb k\u00ebt\u00eb bot\u00eb dhe do t\u00eb b\u00ebj\u00eb nj\u00eb her\u00eb tjet\u00ebr pyetjen - p\u00ebr \u00e7far\u00eb po paguaj parat\u00eb e mia? Pasojat gjithmon\u00eb jan\u00eb t\u00eb nj\u00ebjta - pyetja \u00ebsht\u00eb vet\u00ebm se kur klienti do t\u00eb m\u00ebrzitet dhe do t\u00eb heq\u00eb dor\u00eb. Dhe banka do t\u00eb zbrazet. Kjo \u00ebsht\u00eb trishtues.<br \/>\n2. Zhvillimi i inxhinierit - zero.<br \/>\n3. V\u00ebshtir\u00ebsia n\u00eb planifikimin e pun\u00ebs dhe ngarkes\u00ebs <\/p>\n<h3>Opsioni 2 - \"Dancojm\u00eb me zhurm\u00eb, hedhim dhe veshim\"<\/h3>\n<p>\n<b>Pika 1<\/b>-Pse na nevojitet nj\u00eb sistem monitorimi, ne do t\u00eb marrim gjith\u00e7ka me k\u00ebrkesa. Nisemi me nj\u00eb s\u00ebr\u00eb k\u00ebrkesash n\u00eb fjalorin e t\u00eb dh\u00ebnave dhe prezantimet dinamik, aktivizojm\u00eb nj\u00eb s\u00ebr\u00eb num\u00ebruesish, i p\u00ebrmbledhim t\u00eb gjitha n\u00eb tabela, analizojm\u00eb lista dhe tabela her\u00eb pas here. Si rezultat kemi grafik\u00eb t\u00eb bukura ose jo shum\u00eb, tabela, raporte. E r\u00ebnd\u00ebsishme \u00ebsht\u00eb q\u00eb t\u00eb kemi sa m\u00eb shum\u00eb, sa m\u00eb shum\u00eb.<br \/>\n<b>Pika 2<\/b>-Generojm\u00eb aktivitet - fillojm\u00eb analiz\u00ebn e t\u00eb gjith\u00eb k\u00ebsaj.<br \/>\n<b>Pika 3<\/b>-P\u00ebrgatitnim nj\u00eb dokument, e quajm\u00eb k\u00ebt\u00eb dokument, thjesht - \"si ta organizojm\u00eb baz\u00ebn e t\u00eb dh\u00ebnave.\"<br \/>\n<b>Pika 4<\/b>-Klienti, duke par\u00eb t\u00eb gjith\u00eb k\u00ebt\u00eb mrekulli grafik\u00ebsh dhe numrash, \u00ebsht\u00eb n\u00eb nj\u00eb besim f\u00ebmij\u00ebror naiv - tani gjith\u00e7ka do t\u00eb funksionoj\u00eb, s\u00eb shpejti. Dhe, leht\u00eb dhe pa dhimbje, ndahet nga burimet e tij financiare. Menaxhimi gjithashtu \u00ebsht\u00eb i sigurt - inxhinier\u00ebt tan\u00eb punojn\u00eb gjith\u00e7ka. Ngarkesa \u00ebsht\u00eb n\u00eb maksimum. <br \/>\n<b>Pika 5<\/b>-Rregullisht p\u00ebrs\u00ebritni Pik\u00ebn 1.<br \/>\n<b class=\"spoiler_title\">Biskota dhe puffa, grimca dhe goditje<\/b><b>Biskota dhe puffa: <\/b><br \/>\n1. Jeta e menaxher\u00ebve dhe inxhinier\u00ebve \u00ebsht\u00eb e thjesht\u00eb, e parashikueshme dhe e mbushur me aktivitet. Gjith\u00e7ka bzzz, t\u00eb gjith\u00eb jan\u00eb t\u00eb z\u00ebn\u00eb. <br \/>\n2. Jeta e klientit gjithashtu nuk \u00ebsht\u00eb e keqe - ai gjithmon\u00eb \u00ebsht\u00eb i sigurt se duhet ta pres\u00eb pak m\u00eb shum\u00eb dhe gjith\u00e7ka do t\u00eb rregullohet. Nuk rregullohet, mir\u00eb, \u00e7far\u00eb t\u00eb b\u00ebjm\u00eb - ky \u00ebsht\u00eb nj\u00eb bot\u00eb e padrejt\u00eb, n\u00eb jet\u00ebn tjet\u00ebr do t\u00eb kemi fat.<br \/>\n<b>Grimca dhe goditje:<\/b><br \/>\n1. P\u00ebrshtypja \u00ebsht\u00eb se, von\u00eb a her\u00ebt, do t\u00eb dal\u00eb 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. E n\u00ebse rezultati \u00ebsht\u00eb i nj\u00ebjt\u00eb, pse t\u00eb paguash m\u00eb shum\u00eb? Kjo do t\u00eb \u00e7oj\u00eb p\u00ebrs\u00ebri n\u00eb zhdukjen e burimeve.<br \/>\n2. \u00cbsht\u00eb e m\u00ebrzitshme. Si\u00e7 \u00ebsht\u00eb e m\u00ebrzitshme \u00e7do aktivitet pa kuptim.<br \/>\n3. Si\u00e7 ishte n\u00eb opsionin e m\u00ebparsh\u00ebm \u2014 nuk ka zhvillim. Por p\u00ebr inxhinierin, minus \u00ebsht\u00eb se, ndryshe nga opsioni i par\u00eb, k\u00ebtu duhet t\u00eb gjenerosh vazhdimisht IBD. Kjo merr koh\u00eb. E cila mund t\u00eb shpenzohet n\u00eb p\u00ebrfitim t\u00eb vetvetes. Sepse n\u00ebse nuk kujdesesh p\u00ebr veten, askush nuk ka p\u00ebr tu shqet\u00ebsuar p\u00ebr ty.<\/p>\n<h3>Opsioni 3 - Nuk \u00ebsht\u00eb nevoja t\u00eb shpikni bi\u00e7iklet\u00ebn, thjesht blini nj\u00eb dhe ngisni.<\/h3>\n<p>\nInxhinier\u00ebt e kompanive t\u00eb tjera nuk han\u00eb pizz\u00eb rast\u00ebsisht, e shoq\u00ebruar me birr\u00eb (oh, dit\u00ebt e lavdishme n\u00eb Sh\u00ebn Petersburg t\u00eb viteve '90). Le t\u00eb p\u00ebrdorim sistemet e monitorimit q\u00eb jan\u00eb krijuar, t\u00eb gjitha jan\u00eb provuar dhe funksionojn\u00eb, dhe q\u00eb sjellin v\u00ebrtet p\u00ebrfitim (t\u00eb pakt\u00ebn p\u00ebr krijuesit e tyre).<br \/>\n<b class=\"spoiler_title\">Biskota dhe puffa, grimca dhe goditje<\/b><b>Biskota dhe puffa:<\/b><br \/>\n1. Nuk \u00ebsht\u00eb e nevojshme t\u00eb humbni koh\u00eb duke shpikur di\u00e7ka q\u00eb tashm\u00eb \u00ebsht\u00eb shpikur. Merrni dhe p\u00ebrdorni.<br \/>\n2. Sistemet e monitorimit nuk jan\u00eb shkruar nga budallenj dhe natyrisht q\u00eb jan\u00eb t\u00eb dobishme.<br \/>\n3. Sistemet e monitorimit q\u00eb funksionojn\u00eb zakonisht japin informacione t\u00eb filtruar dhe t\u00eb dobishme. <br \/>\n<b>Grimca dhe goditje:<\/b><br \/>\n1. N\u00eb k\u00ebt\u00eb rast, inxhinieri nuk \u00ebsht\u00eb inxhinier, por thjesht nj\u00eb p\u00ebrdorues i nj\u00eb produkti t\u00eb huaj. Ose nj\u00eb p\u00ebrdorues.<br \/>\n2. Duhet ta bind\u00ebsh klientin p\u00ebr r\u00ebnd\u00ebsin\u00eb e blerjes s\u00eb di\u00e7kaje q\u00eb, n\u00eb fakt, nuk d\u00ebshiron ta kuptoj\u00eb, as q\u00eb duhet, dhe gjithashtu buxheti p\u00ebr vitin \u00ebsht\u00eb miratuar dhe nuk do t\u00eb ndryshoj\u00eb. M\u00eb pas, duhet t\u00eb ndash burime t\u00eb ve\u00e7anta, t\u00eb konfigurosh p\u00ebr sistemin specifik. Dometh\u00ebn\u00eb, fillimisht duhet t\u00eb paguash, paguash dhe p\u00ebrs\u00ebri t\u00eb paguash. E klienti \u00ebsht\u00eb lakmitar. Kjo \u00ebsht\u00eb norma e k\u00ebsaj jete.<\/p>\n<h2>\u00c7far\u00eb duhet b\u00ebr\u00eb - \u00c7ernysh\u00ebvski? Pyetja jote \u00ebsht\u00eb menj\u00ebher\u00eb relevante. (c)<\/h2>\n<p>\nN\u00eb k\u00ebt\u00eb rast konkret dhe n\u00eb situat\u00ebn e krijuar, mund t\u00eb veprohet pak ndryshe \u2014 <b>le t\u00eb krijojm\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 - raportimi\" src=\"\/wp-content\/uploads\/2019\/04\/b59a3ad9e16b68c0fbc962a61d571c52.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nEpo, jo nj\u00eb sistem n\u00eb kuptimin e plot\u00eb t\u00eb fjal\u00ebs, kjo \u00ebsht\u00eb shum\u00eb e madhe dhe arrogante, por ndonj\u00eb gj\u00eb p\u00ebr t\u00eb leht\u00ebsuar pun\u00ebn dhe p\u00ebr t\u00eb grumbulluar sa m\u00eb shum\u00eb informacione p\u00ebr zgjidhjen e incidenteve t\u00eb performanc\u00ebs. Q\u00eb t\u00eb mos p\u00ebrfundosh n\u00eb situat\u00ebn \u2014 \u201cShko atje, nuk e di ku, gjej at\u00eb, nuk e di \u00e7far\u00eb\u201d.<\/p>\n<h4>Cilat jan\u00eb disa p\u00ebrfitime dhe disavantazhe t\u00eb k\u00ebtij opsioni:<\/h4>\n<p><b>Avantazhet:<\/b><br \/>\n1. \u00cbsht\u00eb interesante. T\u00eb pakt\u00ebn interesante m\u00eb shum\u00eb se vazhdimisht \u00abshrink datafile, alter tablespace, etj.\u00bb <br \/>\n2. K\u00ebto jan\u00eb aft\u00ebsi t\u00eb reja dhe nj\u00eb zhvillim i ri. \u00c7ka n\u00eb perspektiv\u00eb do t\u00eb sjell\u00eb von\u00eb ose her\u00ebt \u00ebmb\u00eblsira dhe merita t\u00eb merituara.<br \/>\n<b>Disavantazhet:<\/b><br \/>\n1. Duhet t\u00eb punosh. T\u00eb punosh shum\u00eb. <br \/>\n2. Duhet t\u00eb shpjegosh rregullisht kuptimin dhe perspektivat e t\u00ebr\u00eb aktivitetit.<br \/>\n3. Di\u00e7ka do t\u00eb duhet t\u00eb sakrifikohet, pasi burimi i vet\u00ebm i disponuesh\u00ebm p\u00ebr inxhinierin \u2014 koha \u2014 \u00ebsht\u00eb e kufizuar nga Universi. <br \/>\n<b>4. M\u00eb e keqja dhe m\u00eb e pak\u00ebnaqshme<\/b> \u2014 si rezultati mund t\u00eb dal\u00eb di\u00e7ka e till\u00eb si \"As miush, as frog, por nj\u00eb krijes\u00eb e panjohur.\"<\/p>\n<p><b>Kush nuk rrezikon, nuk pini shampanj\u00eb.<\/b><br \/>\nPra \u2014 fillon m\u00eb e mira.<\/p>\n<h2>Ideja kryesore \u2014 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 - raportimi\" src=\"\/wp-content\/uploads\/2019\/04\/d1ae2ddc1d4c43353fe93eebdaa8b81a.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(<i>Ilustrimi \u00ebsht\u00eb marr\u00eb nga artikulli<\/i> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444988\/\">Sintetizimi si nj\u00eb nga metodat p\u00ebr p\u00ebrmir\u00ebsimin e performanc\u00ebs s\u00eb PostgreSQL<\/a><\/noindex>\u00bb)<\/p>\n<p>Shpjegimi:<\/p>\n<ul>\n<li> N\u00eb baz\u00ebn e synuar vendoset zgjerimi standard PostgreSQL \u2014 \"pg_stat_statements\". <\/li>\n<li>N\u00eb baz\u00ebn e t\u00eb dh\u00ebnave t\u00eb monitorimit krijojm\u00eb nj\u00eb grup tabelash sh\u00ebrbimi p\u00ebr ruajtjen e historis\u00eb s\u00eb pg_stat_statements n\u00eb faz\u00ebn fillestare dhe p\u00ebr konfigurimin e metrikeve dhe monitorimit m\u00eb von\u00eb<\/li>\n<li> N\u00eb hostin e monitorimit krijojm\u00eb nj\u00eb grup skriptesh bash, p\u00ebrfshir\u00eb p\u00ebr gjenerimin e incidenteve n\u00eb sistemin e bileta. <\/li>\n<\/ul>\n<h2>Tabela sh\u00ebrbimi<\/h2>\n<p>\nP\u00ebr fillim, nj\u00eb ERD e thjesht\u00eb-skematike, \u00e7far\u00eb rezultoi n\u00eb fund:<br \/>\n<img decoding=\"async\" alt=\"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 - raportimi\" src=\"\/wp-content\/uploads\/2019\/04\/03d29f4d6932d470d9d88651cbf0c715.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<b class=\"spoiler_title\">P\u00ebrshkrim i shkurt\u00ebr i tabelave<\/b><b>endpoint <\/b> \u2014 hosti, pika e lidhjes me instanc\u00ebn<br \/>\n<b>database <\/b> \u2014 parametrat e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave<br \/>\n<b>pg_stat_history <\/b> \u2014 tabela historike p\u00ebr ruajtjen e kopjeve t\u00eb p\u00ebrkohshme t\u00eb pamjes pg_stat_statements t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave t\u00eb synuar<br \/>\n<b>metric_glossary <\/b> \u2014 fjalori i metrikeve t\u00eb performanc\u00ebs<br \/>\n<b>metric_config <\/b> \u2014 konfigurimi i metrikeve t\u00eb ve\u00e7anta<br \/>\n<b>metric <\/b> \u2014 nj\u00eb metrik\u00eb 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 sh\u00ebrbimi p\u00ebr ruajtjen e sh\u00ebnimeve t\u00eb analizuar nga skedari log i PostgreSQL t\u00eb ngarkuar 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 metrikeve p\u00ebr kontrollin e gjendjes s\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave<br \/>\n<b>checkpoint_alert_history <\/b> \u2014 historia e paralajm\u00ebrimeve t\u00eb metrikeve p\u00ebr kontrollin e gjendjes s\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave<br \/>\n<b>pg_stat_db_queries <\/b> \u2014 tabela sh\u00ebrbimi p\u00ebr k\u00ebrkesat aktive <br \/>\n<b>activity_log <\/b> \u2014 tabela sh\u00ebrbimi p\u00ebr regjistrin e aktiviteteve <br \/>\n<b>trap_oid <\/b> \u2014 tabela sh\u00ebrbimi p\u00ebr konfigurimin e kapjes<\/p>\n<p><\/p>\n<h2>Hapi 1 \u2014 mbledhim informacion statistikor mbi performanc\u00ebn dhe marrim raportet<\/h2>\n<p>\nP\u00ebr ruajtjen e informacionit statistikor sh\u00ebrben tabela <b>pg_stat_history<\/b><br \/>\n<b class=\"spoiler_title\">Struktura e tabel\u00ebs pg_stat_history<\/b><\/p>\n<pre>\n                                          Tabela \"public.pg_stat_history\"\n       Kolona        |            Tip             |                          Modifikuesit\n---------------------+-----------------------------+-------------------------------------------\n id                  | integer                     | jo null default nextval('pg_stat_history_id_seq'::regclass)\n snapshot_timestamp  | timestamp pa zon\u00eb kohore |\n database_id         | integer                     |\n dbid                | oid                         |\n userid              | oid                         |\n queryid             | bigint                      |\n query               | text                        |\n calls               | bigint                      |\n total_time          | double precision            |\n min_time            | double precision            |\n max_time            | double precision            |\n mean_time           | double precision            |\n stddev_time         | double precision            |\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       | double precision            |\n blk_write_time      | double precision            |\n baseline_id         | integer                     |\nIndekset:\n    \"pg_stat_history_pkey\" KLAV\u00cb E DYT\u00cb, 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\" \u00c7EL\u00cbSI I HUAJ (database_id) REFERON database(id) N\u00cb FSHIJE KASKADE<\/pre>\n<p>\nSi\u00e7 shihet, tabela \u00ebsht\u00eb thjesht t\u00eb dh\u00ebna kumulative t\u00eb pamjes <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 thjesht\u00eb<\/h3>\n<p>\n<b>pg_stat_history<\/b> do t\u00eb p\u00ebrfaq\u00ebsoj\u00eb statistik\u00ebn e akumuluar t\u00eb ekzekutimit t\u00eb k\u00ebrkesave p\u00ebr \u00e7do or\u00eb. N\u00eb fillim t\u00eb \u00e7do ore, pasi t\u00eb plot\u00ebsohet tabela, statistika <b>pg_stat_statements<\/b> rinizet p\u00ebrmes <b>pg_stat_statements_reset()<\/b>.<br \/>\nV\u00ebrejtje: <i>statistika mblidhet p\u00ebr k\u00ebrkesat me koh\u00eb ekzekutimi m\u00eb t\u00eb madhe se 1 sekond\u00eb.<\/i><br \/>\n<b class=\"spoiler_title\">Plot\u00ebsimi i tabel\u00ebs pg_stat_history<\/b><\/p>\n<pre><code class=\"plaintext\">--pg_stat_history.sql\nKRIJONI OSE Z\u00cbVEND\u00cbSONI FUNKSIONIN pg_stat_history() KTHE KTHIM BOOLEAN SI $$\nSHPREH\n  endpoint_rec regjist\u00ebr ;\n  database_rec regjist\u00ebr ;\n  pg_stat_snapshot regjist\u00ebr ;\n  current_snapshot_timestamp timestamp pa zon\u00eb kohe;\nFILLIMI\n  current_snapshot_timestamp = data_trunc('minute',now());  \n  \n  P\u00cbR endpoint_rec N\u00cb ZGJEDH K\u00cbT\u00cb * NGA endpoint \n  L\u00cbVIZ\n    P\u00cbR database_rec N\u00cb ZGJEDH K\u00cbT\u00cb * NGA database KU endpoint_id = endpoint_rec.id \n\t  L\u00cbVIZ\n\t    \n\t\tRUAJ NJOFTIM 'SHKUP PODHJE T\u00cb RE T\u00cb KRIJOHET';\n\t\t\n\t\t--Koncekti te DB e synuar\t  \n\t    EXECUTE 'ZGJEDH dblink_connect(''LINK1'',''host='||endpoint_rec.host||' dbname='||database_rec.name||' user=USER password=PASSWORD '')';\n \n        RUAJ NJOFTIM 'host % dhe dbname % ',endpoint_rec.host,database_rec.name;\n\t\tRUAJ NJOFTIM 'Krijimi i nj\u00eb snapshot t\u00eb pg_stat_statements p\u00ebr baz\u00ebn e t\u00eb dh\u00ebnave %',database_rec.name;\n\t\t\n\t\tZGJEDH \n\t      *\n\t\tN\u00cb \n\t\t  pg_stat_snapshot\n\t    NGA dblink('LINK1',\n\t      'ZGJEDH \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       NGA pg_stat_statements KU dbid=(ZGJEDH oid nga pg_database ku datname=current_database() ) \n\t\t   GRUPI NGA dbid\n  \t      '\n\t               )\n\t      SI 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 \n            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, \n            blk_read_time, blk_write_time \n\t\t  )\t\t  \n\t    VLERAT\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        RUAJ NJOFTIM 'Krijimi i nj\u00eb snapshot t\u00eb pg_stat_statements p\u00ebr pyetjet me min_time m\u00eb shum\u00eb se 1000ms';\n\t\n        P\u00cbR pg_stat_snapshot N\u00cb\n          --T\u00eb gjitha pyetjet me max_time m\u00eb shum\u00eb se 1000 ms\n\t      ZGJEDH \n\t        *\n\t      NGA dblink('LINK1',\n\t        'ZGJEDH \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         NGA pg_stat_statements \n\t\t\t KU dbid=(ZGJEDH oid nga pg_database ku datname=current_database() DHE min_time &gt;= 1000 ) \n  \t        '\n\n\t                  )\n\t        SI 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    L\u00cbVIZ\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 \n            local_blks_read,local_blks_dirtied,local_blks_written,temp_blks_read,temp_blks_written, \n            blk_read_time, blk_write_time \n\t\t  )\t\t  \n\t      VLERAT\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        FUND LOOP;\n\n        PERFORM dblink_disconnect('LINK1');  \n\t\t\t\t\n\t  FUND LOOP ;--P\u00cbR database_rec N\u00cb ZGJEDH K\u00cbT\u00cb * NGA database KU endpoint_id = endpoint_rec.id \n    \n  FUND LOOP;\n\nKTHIM T\u00cb V\u00cbRTET\u00cb;  \nFUND\n$$ GJUHA plpgsql;<\/code><\/pre>\n<p>Si n\u00eb rezultat, pas nj\u00eb periudhe t\u00eb caktuar kohe n\u00eb tabel\u00eb <b>pg_stat_history<\/b> do t\u00eb kemi nj\u00eb grup fotografish t\u00eb p\u00ebrmbajtjes s\u00eb tabel\u00ebs <b>pg_stat_statements <\/b>t\u00eb baz\u00ebs s\u00eb t\u00eb dh\u00ebnave q\u00ebllimore. <\/p>\n<h2>Raportimi n\u00eb vetvete<\/h2>\n<p>\nDuke p\u00ebrdorur pyetje t\u00eb thjeshta, mund t\u00eb merrni raporte shum\u00eb t\u00eb dobishme dhe interesante.<\/p>\n<h2>T\u00eb dh\u00ebnat e agreguara p\u00ebr nj\u00eb periudh\u00eb t\u00eb caktuar kohe<\/h2>\n<p><b class=\"spoiler_title\">Pyetje<\/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) AS 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 '1 millisecond' * pg_total_stat_history_rec.total_time, 'HH24:MI:SS.MS')<\/p><\/blockquote>\n<p><\/p>\n<h4>Koha I\/O<\/h4>\n<blockquote><p>to_char(interval '1 millisecond' * (pg_total_stat_history_rec.blk_read_time + pg_total_stat_history_rec.blk_write_time), 'HH24:MI:SS.MS')<\/p><\/blockquote>\n<h3>TOP10 SQL sipas koh\u00ebs totale<\/h3>\n<p><b class=\"spoiler_title\">Pyetje<\/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 T\u00cb EKZEKUTIMIT\n|   #|    queryid|      calls|    calls %|                total_time (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 sipas koh\u00ebs totale I\/O<\/h4>\n<p><b class=\"spoiler_title\">Pyetje<\/b><\/p>\n<pre><code class=\"plaintext\">SELECT \n  queryid , \n  SUM(calls) AS calls ,\n  SUM(blk_read_time + blk_write_time)  AS io_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\nGROUP BY  queryid \nORDER BY 3 DESC \nLIMIT 10<\/code><\/pre>\n<pre>----------------------------------------------------------------------------------------\n| TOP10 SQL NGA KOHA TOTALE I\/O\n|   #|    queryid|      calls|    calls %|                   Koh\u00eb I\/O (ms)|% Koh\u00eb I\/O n\u00eb db\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\">Pyetje<\/b><\/p>\n<pre><code class=\"plaintext\">SELECT \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 E 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 sipas leximeve\/shkrimeve t\u00eb bufferit t\u00eb P\u00cbRBASHK\u00cbT<\/h4>\n<p><b class=\"spoiler_title\">Pyetje<\/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 SHK\u00cbMBIMIT T\u00cb BLLoqeve T\u00cb BAZ\u00cbS\n|   #|          snapshot| snapshotID|    queryid|   blloqe t\u00eb ndara lexuara|  blloqe t\u00eb ndara shkruara\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>Histogrami i 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\">SELECT  \n  MIN(max_time) AS hist_min  , \n  MAX(max_time) AS hist_max , \n  (( MAX(max_time) - MIN(min_time) ) \/ hist_columns ) as hist_width\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 ;\n\nSELECT \n  SUM(calls) AS calls\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  ( max_time &gt;= hist_current_min AND  max_time &lt; hist_current_max ) ;\n<\/code><\/pre>\n<pre>|-----------------------------------------------------------------------------------------------\n| HISTOGRAMI I KOHEVE MAKSIMALE\n| TOTALI I K\u00cbRKESEVE : 33851920\n| KOHA MINIMALE  : 00:00:01.063\n| KOHA MAKSIMALE  : 00:02:01.869\n---------------------------------------------------------------------------------\n|                      mini p\u00ebrshkrimi|                      maxi p\u00ebrshkrimi|     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\u00ebrkesave p\u00ebr Sekond\u00eb<\/h4>\n<p><b class=\"spoiler_title\">K\u00ebrkesat<\/b><\/p>\n<pre><code class=\"plaintext\">--pg_qps.sql\n--Llogaritni Pyetjet 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 'Gabim - 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 Snapshot-et e renditur nga numrat e QueryPerSeconds\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>Historia e Ekzekutimit t\u00eb Or\u00ebve me QueryPerSeconds dhe Koh\u00ebn e I\/O<\/h4>\n<p><b class=\"spoiler_title\">Pyetje<\/b><\/p>\n<pre><code class=\"plaintext\">SELECT \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\nORDER BY 2\n<\/code><\/pre>\n<pre>|-----------------------------------------------------------------------------------------------\n| HISTORIA E EKZEKUTIMIT NGA ORA DHE Koha I\/O\n-----------------------------------------------------------------------------------------------------------------------------------------------\n| HISTORIA E K\u00cbRKIMEVE N\u00cb SEKOND\u00cb\n|    #|          snapshot| snapshotID|      calls|                      koha totale db|        KPS|                          Koha I\/O| Pjesa e koh\u00ebs I\/O %\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>P\u00ebrmbajtja e t\u00eb gjith\u00eb SQL-selekt\u00ebve<\/h4>\n<p><b class=\"spoiler_title\">Pyetje<\/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 duket, me mjete mjaft t\u00eb thjeshta, mund t\u00eb marrim nj\u00eb sasi t\u00eb madhe informacioni t\u00eb dobish\u00ebm mbi ngarkes\u00ebn dhe gjendjen e baz\u00ebs s\u00eb t\u00eb dh\u00ebnave. <\/p>\n<p><b>V\u00ebrejtje:<\/b>N\u00ebse n\u00eb k\u00ebrkesa regjistrojm\u00eb queryid, do t\u00eb marrim historikun p\u00ebr nj\u00eb k\u00ebrkes\u00eb t\u00eb ve\u00e7ant\u00eb (p\u00ebr t\u00eb kursyer hap\u00ebsir\u00eb, raportet p\u00ebr k\u00ebrkesa t\u00eb ve\u00e7anta jan\u00eb l\u00ebn\u00eb jasht\u00eb).<\/p>\n<p>Pra, t\u00eb dh\u00ebnat statistikore mbi performanc\u00ebn e k\u00ebrkesave\u2014jan\u00eb t\u00eb pranishme dhe po mblidhen.<br \/>\nFaza e par\u00eb \"mbledhja e t\u00eb dh\u00ebnave statistikore\"\u2014\u00ebsht\u00eb p\u00ebrfunduar.<\/p>\n<p>Mund t\u00eb kalojm\u00eb n\u00eb faz\u00ebn e dyt\u00eb\u2014\"konfigurimi i metrikave t\u00eb performanc\u00ebs\".<br \/>\n<img decoding=\"async\" alt=\"Monitorimi i performanc\u00ebs s\u00eb k\u00ebrkesave PostgreSQL. Pjesa 1 - 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>To be continued...<\/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.2 - 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.\" \/>\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.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\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.\" \/>\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\u2014raportimi | ProHoster","description":"Inxhinieri\u2014n\u00eb p\u00ebrkthim nga latinishtja\u2014\u00ebsht\u00eb i frym\u00ebzuar. Inxhinieri mund t\u00eb b\u00ebj\u00eb gjith\u00e7ka. (c) R.Dizel. Epigrafet.","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.","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}]}}