{"id":79028,"date":"2020-04-23T19:43:19","date_gmt":"2020-04-23T17:43:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/pishem-v-postgresql-na-subsvetovoj-1-host-1-day-1tb"},"modified":"2020-04-23T19:43:19","modified_gmt":"2020-04-23T17:43:19","slug":"pishem-v-postgresql-na-subsvetovoj-1-host-1-day-1tb","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pishem-v-postgresql-na-subsvetovoj-1-host-1-day-1tb","title":{"rendered":"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>S\u00eb fundi tregova se si me an\u00eb t\u00eb recetave standarde <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/tensor\/blog\/492694\/\">mund t\u00eb rritet performanca e SQL-ve t\u00eb 'leximit'<\/a><\/noindex> nga baza e t\u00eb dh\u00ebnave PostgreSQL. Sot do t\u00eb flasim se si <b>mund t\u00eb b\u00ebhet m\u00eb efikas shkrimi<\/b> n\u00eb DB pa p\u00ebrdorur ndonj\u00eb 'p\u00ebrpunues' n\u00eb konfigurim \u2014 thjesht duke organizuar si\u00e7 duhet rrjedhat e t\u00eb dh\u00ebnave.<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/cbebbe0ed0e9a6590a4e8dd144f82f40.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h2>#1. \u0421\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h2>\n<p>\nArtikulli p\u00ebr at\u00eb se si dhe pse duhet t\u00eb organizohet <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/483170\/\">sekcionimi i aplikacioneve 'n\u00eb teori'<\/a><\/noindex> ka qen\u00eb, tani do t\u00eb flasim p\u00ebr praktik\u00ebn e zbatimit t\u00eb disa qasjeve n\u00eb kuad\u00ebr t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/487380\/\">sh\u00ebrbimit ton\u00eb t\u00eb monitorimit t\u00eb qindra server\u00ebve PostgreSQL<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h4>\u00abK\u00ebto jan\u00eb vite t\u00eb kaluar\u2026\u00bb<\/h4>\n<p>\nFillimisht, si \u00e7do MVP tjet\u00ebr, projekti yn\u00eb filloi me nj\u00eb ngarkes\u00eb mjaft t\u00eb vog\u00ebl \u2014 monitorimi b\u00ebhej vet\u00ebm p\u00ebr disa nga server\u00ebt m\u00eb kritik\u00eb, t\u00eb gjitha tabelat ishin relativisht kompakte\u2026 Por koha kalonte, numri i hosteve t\u00eb monitoruar po rritej vazhdimisht, dhe duke u p\u00ebrpjekur p\u00ebrs\u00ebri t\u00eb b\u00ebnim di\u00e7ka me nj\u00eb nga <b>tabelat me mas\u00eb 1.5TB<\/b>, kuptuam se duke jetuar k\u00ebshtu edhe mundeshim, por ishte shum\u00eb e pap\u00ebshtatshme.<\/p>\n<p>Koha ishte pothuajse legjendare, versionet e ndryshme t\u00eb PostgreSQL 9.x ishin aktuale, prandaj \u00e7do sekcionim duhej t\u00eb b\u00ebhej 'me duar' \u2014 p\u00ebrmes <b>Trash\u00ebgimis\u00eb s\u00eb tabelave dhe triggerave<\/b> t\u00eb routingut me dinamik\u00eb. <code>EKZEKUTOJ<\/code>.<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/a480e75ccec73080aa2d0be1435d2a2e.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nZgjidhja e arritur rezultoi t\u00eb ishte mjaft universale, q\u00eb mund t\u00eb transponoheshin n\u00eb t\u00eb gjitha tabelat:<\/p>\n<ul>\n<li>U shpall nj\u00eb tabel\u00eb 'prind' bosh, n\u00eb t\u00eb cil\u00ebn u p\u00ebrshkruan t\u00eb gjitha <b>indekset dhe triggerat e nevojsh\u00ebm.<\/b>.<\/li>\n<li>Shkrimi nga k\u00ebndv\u00ebshtrimi i klientit b\u00ebhej n\u00eb tabel\u00ebn 'rr\u00ebnj\u00eb', dhe brenda saj me an\u00eb t\u00eb <b>triggerit t\u00eb routingut<\/b> <code>BEFORE INSERT<\/code> shkrimi \u00abfizikisht\u00bb u vendos n\u00eb seksionin e duhur. N\u00ebse nuk kishte nj\u00eb t\u00eb till\u00eb \u2014 ne kap\u00ebm p\u00ebrjashtimin dhe\u2026<\/li>\n<li>\u2026 me an\u00eb t\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/492464\/\"><code>CREATE TABLE ... (LIKE ... INCLUDING ...)<\/code><\/a><\/noindex> sip\u00ebrfaqeve t\u00eb tabel\u00ebs prind krijohej <b>seksioni me kufizimin n\u00eb dat\u00ebn e nevojshme<\/b>, q\u00eb gjat\u00eb nxjerrjes s\u00eb t\u00eb dh\u00ebnave lexohej vet\u00ebm n\u00eb t\u00eb.<\/li>\n<\/ul>\n<p><\/p>\n<h4>PG10: p\u00ebrpjekja e par\u00eb<\/h4>\n<p>\nPor sekcionimi p\u00ebrmes trash\u00ebgimis\u00eb historikisht nuk ishte shum\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr t'u punuar me nj\u00eb rrjedh\u00eb aktive shkrimi ose me nj\u00eb num\u00ebr t\u00eb madh seksionesh-p\u00ebrfituese. P\u00ebr shembull, mund t\u00eb kujtojm\u00eb se algoritmi p\u00ebr zgjedhjen e seksionit t\u00eb nevojsh\u00ebm kishte <b>kompleksitetin katror<\/b>, q\u00eb me mbi 100 seksione punon, e kuptoni si \u2026<\/p>\n<p>N\u00eb PG10 kjo situat\u00eb u optimizua shum\u00eb, duke realizuar mb\u00ebshtetje p\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/postgrespro.ru\/docs\/postgresql\/10\/ddl-partitioning\">sekcionimin e natyrsh\u00ebm.<\/a><\/noindex>Prandaj e provuam menj\u00ebher\u00eb pas migrimit t\u00eb depozit\u00ebs, por \u2026<\/p>\n<p>Si\u00e7 u zbulua pas shqyrtimit t\u00eb manualit, tabela e sekcionuar n\u00eb k\u00ebt\u00eb version:<\/p>\n<ul>\n<li>nuk mb\u00ebshtet p\u00ebrshkrimin e indekseve<\/li>\n<li>nuk mb\u00ebshtet triggerat mbi t\u00eb<\/li>\n<li>nuk mund t\u00eb jet\u00eb vet\u00eb pasardh\u00ebse e askujt<\/li>\n<li>nuk mb\u00ebshtet <code>INSERT ... ON CONFLICT<\/code><\/li>\n<li>nuk di t\u00eb gjeneroj\u00eb seksione automatikisht<\/li>\n<\/ul>\n<p>\nPas nj\u00eb goditjeje n\u00eb ball\u00eb me grushta, kuptuam se pa modifikimin e aplikacionit nuk do t\u00eb mundeshim, dhe e shtym\u00eb studimin e m\u00ebtejm\u00eb p\u00ebr gjasht\u00eb muaj.<\/p>\n<h4>PG10: shansi i dyt\u00eb<\/h4>\n<p>\nPra, filluam t\u00eb zgjidhim problemet e shfaqura nj\u00eb nga nj\u00eb:<\/p>\n<ol>\n<li>Duke qen\u00eb se triggerat dhe <code>ON CONFLICT<\/code> na ishin t\u00eb nevojshme disa her\u00eb, p\u00ebr ta trajtuar b\u00ebm\u00eb nj\u00eb <b>tabel\u00eb nd\u00ebrmjet\u00ebse.<\/b>.<\/li>\n<li><b>Shk\u00ebput\u00ebm 'routingun'<\/b> n\u00eb triggera \u2014 dmth <code>EKZEKUTOJ<\/code>.<\/li>\n<li>Dijm\u00eb ve\u00e7mas <b>tabel\u00ebn-shembull me t\u00eb gjitha indekset<\/b>, n\u00eb m\u00ebnyr\u00eb q\u00eb ato t\u00eb mos ishin t\u00eb pranishme as n\u00eb tabel\u00ebn nd\u00ebrmjet\u00ebse.<\/li>\n<\/ol>\n<p>\n<img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/db3118798357575568489f6b575373b6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nN\u00eb fund, pas gjith\u00eb k\u00ebsaj, sekcionuam tabel\u00ebn kryesore n\u00eb m\u00ebnyr\u00eb natyrale. Krijimi i nj\u00eb seksioni t\u00eb ri mbeti p\u00ebr t\u00eb qen\u00eb n\u00eb duar t\u00eb aplikacionit.<\/p>\n<h4>'Dizajnojm\u00eb' fjalor\u00ebt<\/h4>\n<p>\nSi n\u00eb \u00e7do sistem analitik, edhe ne kishim <b>'fakte' dhe 'dimensione'<\/b> (fjalor\u00eb). N\u00eb rastin ton\u00eb, ky rol e kishin, p\u00ebr shembull, <noindex><a rel=\"nofollow\" href=\"https:\/\/youtu.be\/5XKbFb-l5Do?t=2487\">trupi i 'shembullit'<\/a><\/noindex> t\u00eb pyetjeve t\u00eb ngadalta ose vet\u00eb teksti i pyetjes.<\/p>\n<p>'Faktet' tona ishin t\u00eb sekcionuara n\u00eb dit\u00eb qysh shum\u00eb koh\u00eb m\u00eb par\u00eb, aq sa i hiqnim me leht\u00ebsi seksionet e vjetruara dhe ato nuk na shqet\u00ebsonin (p\u00ebr shkak t\u00eb logeve!). Por me fjalor\u00ebt ndodhi ndryshe\u2026<\/p>\n<p>Nuk do t\u00eb thosha se kishte shum\u00eb prej tyre, por p\u00ebr \u00e7do 100TB 'faktesh' dol\u00ebn nj\u00eb fjalor prej 2.5TB. <b>Nga nj\u00eb tabel\u00eb e till\u00eb nuk mund t\u00eb hiqet asgj\u00eb leht\u00ebsisht, nuk mund t\u00eb kompresohet brenda nj\u00eb kohe t\u00eb arsyeshme, dhe gjithashtu, shkrimi brenda saj po b\u00ebhej gjithnj\u00eb e m\u00eb e ngadalt\u00eb.<\/b>Duket si fjalor\u2026 \u00e7do regjist\u00ebr duhet t\u00eb paraqitet sakt\u00ebsisht nj\u00eb her\u00eb\u2026 dhe kjo \u00ebsht\u00eb e sakt\u00eb, por!.. Askush nuk na ndalon t\u00eb kemi<\/p>\n<p>nj\u00eb fjalor t\u00eb ve\u00e7ant\u00eb p\u00ebr \u00e7do dit\u00eb <b>! Po, kjo sjell nj\u00eb sasi t\u00eb caktuar t\u00eb tep\u00ebrt, por gjithashtu lejon:<\/b>t\u00eb shkruajm\u00eb\/leht\u00ebsojm\u00eb m\u00eb shpejt<\/p>\n<ul>\n<li><b>n\u00eb saj\u00eb t\u00eb mas\u00ebs m\u00eb t\u00eb vog\u00ebl t\u00eb seksionit<\/b> p\u00ebrdor m\u00eb pak memorie<\/li>\n<li><b>n\u00eb saj\u00eb t\u00eb pun\u00ebs me indekset m\u00eb kompakte<\/b> t\u00eb ruajm\u00eb m\u00eb pak t\u00eb dh\u00ebna<\/li>\n<li><b>n\u00eb saj\u00eb t\u00eb zgjedhjes p\u00ebr t\u00eb hequr shpejt ato t\u00eb vjetruara.<\/b> Si rezultat i gjith\u00eb kompleksit t\u00eb aktiviteteve<\/li>\n<\/ul>\n<p>\nngarkesa n\u00eb CPU u zvog\u00eblua me rreth 30%, n\u00eb disk \u2014 me rreth 50% <b>Dhe ne vazhduam t\u00eb shkruajm\u00eb n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave t\u00eb nj\u00ebjt\u00eb, vet\u00ebm me nj\u00eb ngarkes\u00eb m\u00eb t\u00eb vog\u00ebl.<\/b>:<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/fd3a219a304dc46173a7eb435502fe02.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMegjithat\u00eb, vazhduam t\u00eb shkruajm\u00eb n\u00eb baz\u00eb t\u00eb nj\u00ebjtit informacion, thjesht me nj\u00eb ngarkes\u00eb m\u00eb t\u00eb vog\u00ebl.<\/p>\n<h2>#2. \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433 \u0411\u0414<\/h2>\n<p>\nPra, ne arrit\u00ebm t\u00eb kuptojm\u00eb se kemi <b>nj\u00eb seksion p\u00ebr \u00e7do dit\u00eb,<\/b> duke e b\u00ebr\u00eb at\u00eb. <code>CHECK (dt = '2018-10-12'::date)<\/code> \u2014 dhe ky \u00ebsht\u00eb \u00e7el\u00ebsi i sekcionimit dhe kushti p\u00ebr t\u00eb futur nj\u00eb regjist\u00ebr n\u00eb seksionin p\u00ebrkat\u00ebs.<\/p>\n<p>Duke qen\u00eb se t\u00eb gjitha raportet n\u00eb sh\u00ebrbimin ton\u00eb jan\u00eb ndar\u00eb sipas datave specifike, indikatoret e tyre q\u00eb erdh\u00ebn q\u00eb nga koha 'para sekcionimit' kishin t\u00eb gjith\u00eb form\u00ebn e <i>(Server, <b>Data<\/b>, Shabllon plani)<\/i>, <i>(Server, <b>Data<\/b>, Nodi i planit)<\/i>, <i>(<b>Data<\/b>, Klasa e gabimeve, Server)<\/i>,\u2026<\/p>\n<p>Por tani, n\u00eb \u00e7do seksion jetojn\u00eb <u>ekzemplar\u00ebt e vet<\/u> t\u00eb \u00e7do indikatori t\u00eb till\u00eb\u2026 Dhe n\u00eb kuad\u00ebr t\u00eb \u00e7do seksioni <u>data \u00ebsht\u00eb nj\u00eb konstant\u00eb<\/u>\u2026 Pra, tani tani ne e futim k\u00ebt\u00eb konstant\u00eb <b>si nj\u00eb nga fushat, q\u00eb p\u00ebrmir\u00ebson dhe volumet e tij dhe koh\u00ebn e k\u00ebrkimit, por nuk sjell rezultat. Ne kemi l\u00ebn\u00eb nj\u00eb 'kurth' p\u00ebr veten, ups\u2026<\/b> si nj\u00eb nga fushat, duke rritur si v\u00ebllimin ashtu edhe koh\u00ebn e k\u00ebrkimit mbi t\u00eb, por pa sjell\u00eb ndonj\u00eb rezultat. Vet\u00eb i lan\u00eb gabimet, ups\u2026<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/c7644644b960c568c4adaeec57cfef2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDrejtimi i optimizimit \u00ebsht\u00eb i qart\u00eb \u2014 thjesht <b>heqim fush\u00ebn e dat\u00ebs nga t\u00eb gjitha indeksat<\/b> n\u00eb tabelat e sekcionuara. Me volumin ton\u00eb, fitimi \u00ebsht\u00eb rreth <b>1TB\/n\u00eb jav\u00eb<\/b>!<\/p>\n<p>Dhe tani le t\u00eb v\u00ebm\u00eb re se ky terabajt duhet gjithashtu t\u00eb regjistrohet diku. K\u00ebshtu q\u00eb tani ne duhet <b>t\u00eb ngarkojm\u00eb m\u00eb pak disk<\/b>! N\u00eb k\u00ebt\u00eb imazh, efekti i arritur nga pastrimi i b\u00ebr\u00eb, p\u00ebr t\u00eb cilin p\u00ebrkushtuam nj\u00eb jav\u00eb, \u00ebsht\u00eb shum\u00eb i duksh\u00ebm:<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/f45e3b26337074a07751ea28961009bf.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>#3. \u00ab\u0420\u0430\u0437\u043c\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u00bb \u043f\u0438\u043a\u043e\u0432\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443<\/h2>\n<p>\nNj\u00eb nga fatkeq\u00ebsit\u00eb e m\u00ebdha t\u00eb sistemeve t\u00eb ngarkuara \u00ebsht\u00eb <b>sinkronizimi i tepruar<\/b> i disa operacioneve q\u00eb nuk e k\u00ebrkojn\u00eb at\u00eb. Ndonj\u00ebher\u00eb 'sepse nuk e v\u00ebm\u00eb re', ndonj\u00ebher\u00eb 'ishte m\u00eb e leht\u00eb', por her\u00ebt ose von\u00eb duhet t\u00eb heqim dor\u00eb prej saj.<\/p>\n<p>Afrojm\u00eb imazhin e m\u00ebparsh\u00ebm \u2014 dhe shohim se disku yn\u00eb <b>\u2018ngarkon\u2019 me dy her\u00eb amplitud\u00ebn<\/b> n\u00eb mes t\u00eb mostra, q\u00eb nuk duhet t\u00eb ndodhte 'statistikisht' me nj\u00eb num\u00ebr t\u00eb till\u00eb operacionesh:<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/ac3f19213cba0f111864c6dbf9a73912.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTa arrijm\u00eb k\u00ebt\u00eb \u00ebsht\u00eb mjaft e thjesht\u00eb. Q\u00eb kemi monitoruar pothuajse <b>1000 server\u00eb,<\/b>\u00e7do nj\u00ebri p\u00ebrpunon nj\u00eb rrjedh\u00eb logjike t\u00eb ve\u00e7ant\u00eb, dhe \u00e7do rrjedh\u00eb derdh informacionin e akumuluar p\u00ebr ta d\u00ebrguar n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave me nj\u00eb periudh\u00eb t\u00eb caktuar, p\u00ebraf\u00ebrsisht k\u00ebshtu:<\/p>\n<pre><code class=\"javascript\">setInterval(sendToDB, interval)<\/code><\/pre>\n<p>\nProblemi k\u00ebtu q\u00ebndron pik\u00ebrisht n\u00eb faktin se <b>t\u00eb gjitha rrjedh\u00ebt fillojn\u00eb p\u00ebraf\u00ebrsisht n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb<\/b>, k\u00ebshtu q\u00eb momentet e d\u00ebrgimit jan\u00eb pothuajse gjithmon\u00eb t\u00eb nj\u00ebjta 'deri n\u00eb pik\u00eb'. Ups nr.2\u2026<\/p>\n<p>Me fat, kjo rregullohet mjaft leht\u00eb, <b>duke shtuar nj\u00eb \u2018n\u00eb rast\u2019 hap\u00ebsire<\/b> sip\u00ebr gjat\u00eb koh\u00ebs:<\/p>\n<pre><code class=\"javascript\">setInterval(sendToDB, interval * (1 + 0.1 * (Math.random() - 0.5)))<\/code><\/pre>\n<p><\/p>\n<h2>#4. \u041a\u044d\u0448\u0438\u0440\u0443\u0435\u043c, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043c\u043e\u0436\u043d\u043e<\/h2>\n<p>\nProblemi i tret\u00eb tradicional i ngarkes\u00ebs s\u00eb lart\u00eb \u2014 <b>mungesa e caches<\/b> aty ku ai <i>mund t\u00eb<\/i> duhet t\u00eb jet\u00eb.<\/p>\n<p>P\u00ebr shembull, ne krijuam mund\u00ebsin\u00eb e analiz\u00ebs sipas nodave t\u00eb planit (t\u00eb gjitha k\u00ebto <code>Seq Scan on users<\/code>), por menj\u00ebher\u00eb e humb\u00ebm iden\u00eb se ato, n\u00eb shumic\u00ebn, jan\u00eb t\u00eb nj\u00ebjta.<\/p>\n<p>Jo, sigurisht, nuk ka asnj\u00eb shkrim t\u00eb p\u00ebrs\u00ebritur n\u00eb baz\u00eb, kjo e kthen triggerin me <code>INSERT ... ON CONFLICT DO NOTHING<\/code>. Por k\u00ebto t\u00eb dh\u00ebna gjithsesi arrijn\u00eb n\u00eb baz\u00eb, dhe akoma \u00ebsht\u00eb nj\u00eb <b>lexim t\u00eb tepruar p\u00ebr t\u00eb kontrolluar konfliktin<\/b> duhet t\u00eb b\u00ebjm\u00eb. Ups nr.3\u2026<\/p>\n<p>Dallimi n\u00eb numrin e regjistrave t\u00eb d\u00ebrguar n\u00eb baz\u00eb para\/pas aktivizimit t\u00eb caches \u00ebsht\u00eb i qart\u00eb:<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/37fa7e64a674f03a79f2765a79ec8138.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nDhe kjo \u00ebsht\u00eb r\u00ebnia e ngarkes\u00ebs n\u00eb depo:<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/b2c563b4b41755211e77768d80f8702f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>N\u00eb p\u00ebrfundim<\/h2>\n<p>\n\u2018Terabajt n\u00eb dit\u00eb\u2019 vet\u00ebm duket e frikshme. N\u00ebse gjith\u00e7ka b\u00ebni n\u00eb m\u00ebnyr\u00eb t\u00eb sakt\u00eb, at\u00ebher\u00eb kjo \u00ebsht\u00eb vet\u00ebm <b>2^40 byte \/ 86400 sekonda = ~12.5MB\/s<\/b>, q\u00eb e mbajt\u00ebn madje edhe disqet IDE t\u00eb tavolin\u00ebs. \ud83d\ude42<\/p>\n<p>Por n\u00ebse flasim seriozisht, madje edhe n\u00eb nj\u00eb \u2018stres\u2019 dhjet\u00ebfish t\u00eb ngarkes\u00ebs gjat\u00eb dit\u00ebs, mund t\u00eb ankoroheni rehat n\u00eb mund\u00ebsit\u00eb e SSD-ve moderne.<\/p>\n<p><img decoding=\"async\" alt=\"Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb sublumin: 1 host, 1 dit\u00eb, 1TB\" src=\"\/wp-content\/uploads\/2020\/04\/6f3f8d4636ba50f3d5401bf4e456757f.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/497008\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u00ab\u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u00bb \u0438\u0437 PostgreSQL-\u0431\u0430\u0437\u044b. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0436\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0411\u0414 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u00ab\u043a\u0440\u0443\u0442\u0438\u043b\u043e\u043a\u00bb \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0435 \u2014 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0432 \u043f\u043e\u0442\u043e\u043a\u0438 \u0434\u0430\u043d\u043d\u044b\u0445. #1. \u0421\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0421\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e \u0442\u043e, \u043a\u0430\u043a \u0438 \u0437\u0430\u0447\u0435\u043c \u0441\u0442\u043e\u0438\u0442 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043a\u043b\u0430\u0434\u043d\u043e\u0435 \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u00ab\u0432 \u0442\u0435\u043e\u0440\u0438\u0438\u00bb [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":79029,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-79028","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=\"\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u00ab\u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u00bb \u0438\u0437.\" \/>\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\/pishem-v-postgresql-na-subsvetovoj-1-host-1-day-1tb\" \/>\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\u041f\u0438\u0448\u0435\u043c \u0432 PostgreSQL \u043d\u0430 \u0441\u0443\u0431\u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0439: 1 host, 1 day, 1TB | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u00ab\u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u00bb \u0438\u0437.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pishem-v-postgresql-na-subsvetovoj-1-host-1-day-1tb\" \/>\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=\"2020-04-23T17:43:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-23T17:43:19+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\udd47Shkruajm\u00eb n\u00eb PostgreSQL n\u00eb n\u00ebn-lumin: 1 host, 1 dit\u00eb, 1TB | ProHoster","description":"Recentemente, ndash; t\u00eb tregova se si t\u00eb rritet produktiviteti i SQL-queries \"n\u00eb lexim\" duke p\u00ebrdorur receta t\u00eb zakonshme.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pishem-v-postgresql-na-subsvetovoj-1-host-1-day-1tb","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\u041f\u0438\u0448\u0435\u043c \u0432 PostgreSQL \u043d\u0430 \u0441\u0443\u0431\u0441\u0432\u0435\u0442\u043e\u0432\u043e\u0439: 1 host, 1 day, 1TB | ProHoster","og:description":"\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u043b, \u043a\u0430\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0442\u0438\u043f\u043e\u0432\u044b\u0445 \u0440\u0435\u0446\u0435\u043f\u0442\u043e\u0432 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u00ab\u043d\u0430 \u0447\u0442\u0435\u043d\u0438\u0435\u00bb \u0438\u0437.","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/pishem-v-postgresql-na-subsvetovoj-1-host-1-day-1tb","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":"2020-04-23T17:43:19+00:00","article:modified_time":"2020-04-23T17:43:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"79028","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 16:46:34","updated":"2022-10-01 20:30:41","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\/79028","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=79028"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/79028\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/79029"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=79028"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=79028"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=79028"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}