{"id":37975,"date":"2019-10-31T22:20:56","date_gmt":"2019-10-31T19:20:56","guid":{"rendered":"https:\/\/prohoster.info\/blog\/apgrejd-dlya-lenivyh-kak-postgresql-12-povyshaet-proizvoditelnost\/"},"modified":"2019-10-31T22:20:56","modified_gmt":"2019-10-31T19:20:56","slug":"apgrejd-dlya-lenivyh-kak-postgresql-12-povyshaet-proizvoditelnost","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/apgrejd-dlya-lenivyh-kak-postgresql-12-povyshaet-proizvoditelnost","title":{"rendered":"Uppgradering f\u00f6r lata: hur PostgreSQL 12 f\u00f6rb\u00e4ttrar prestandan","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Uppgradering f\u00f6r lata: hur PostgreSQL 12 f\u00f6rb\u00e4ttrar prestandan\" src=\"\/wp-content\/uploads\/2019\/09\/59721c53412b5932a332bd6c687650e8.JPG\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/\">PostgreSQL 12<\/a><\/noindex>, den senaste versionen av \"v\u00e4rldens b\u00e4sta relationsdatabas med \u00f6ppen k\u00e4llkod\" sl\u00e4pps om ett par veckor (om allt g\u00e5r enligt plan). Detta f\u00f6ljer det vanliga schemat \u2014 en ny version med massor av nya funktioner sl\u00e4pps en g\u00e5ng om \u00e5ret, och \u00e4rligt talat \u00e4r det imponerande. D\u00e4rf\u00f6r har jag blivit en aktiv medlem i PostgreSQL-gemenskapen.<\/p>\n<p><\/p>\n<p>Jag tycker att, till skillnad fr\u00e5n tidigare versioner, s\u00e5 inneh\u00e5ller PostgreSQL 12 inga enstaka revolutionerande funktioner (som partitionering eller parallell beg\u00e4ran). Jag sk\u00e4mtade en g\u00e5ng om att den st\u00f6rsta grejen med PostgreSQL 12 \u00e4r \u00f6kad stabilitet. Och \u00e4r inte det precis vad man beh\u00f6ver n\u00e4r man hanterar kritiska data f\u00f6r verksamheten?<\/p>\n<p><\/p>\n<p>Men PostgreSQL 12 stannar inte d\u00e4r: med de nya funktionerna och f\u00f6rb\u00e4ttringarna kommer appar att prestera b\u00e4ttre, <em>och allt som kr\u00e4vs av dig \u00e4r att uppgradera!<\/em><\/p>\n<p><\/p>\n<p>(N\u00e5v\u00e4l, kanske \u00e4ven bygga om indexen, men i den h\u00e4r versionen \u00e4r det inte s\u00e5 skr\u00e4mmande som vi \u00e4r vana vid.)<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Det kommer att bli fantastiskt \u2014 att uppgradera PostgreSQL och direkt f\u00e5 njuta av betydande f\u00f6rb\u00e4ttringar utan extra anstr\u00e4ngning. F\u00f6r n\u00e5gra \u00e5r sedan analyserade jag uppgraderingen fr\u00e5n PostgreSQL 9.4 till PostgreSQL 10 och s\u00e5g hur applikationen accelererade tack vare f\u00f6rb\u00e4ttrad parallellism av f\u00f6rfr\u00e5gningar i PostgreSQL 10. Och viktigast av allt, det kr\u00e4vdes n\u00e4stan inget av mig (bara st\u00e4lla in en konfigurationsparameter. <code>max_parallel_workers<\/code>).<\/p>\n<p><\/p>\n<p>H\u00e5ller du med om att det \u00e4r bekv\u00e4mt n\u00e4r applikationerna fungerar b\u00e4ttre direkt efter uppgraderingen? Och vi str\u00e4var verkligen efter att gl\u00e4dja v\u00e5ra anv\u00e4ndare, f\u00f6r PostgreSQL f\u00e5r fler och fler anv\u00e4ndare.<\/p>\n<p><\/p>\n<p>Och hur kommer en enkel uppgradering till PostgreSQL 12 att g\u00f6ra dig lycklig? L\u00e5t mig f\u00f6rklara.<\/p>\n<p><\/p>\n<h3 id=\"sereznye-uluchsheniya-indeksirovaniya\">Betydande f\u00f6rb\u00e4ttringar av indexering<\/h3>\n<p><\/p>\n<p>Utan indexering kommer databasen inte l\u00e5ngt. Hur annars kan man snabbt hitta information? Det grundl\u00e4ggande indexeringssystemet i PostgreSQL kallas <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/B-tree\">B-tr\u00e4d<\/a><\/noindex>. Denna typ av index \u00e4r optimerad f\u00f6r lagringssystem.<\/p>\n<p><\/p>\n<p>Vi anv\u00e4nder helt enkelt kommandot <code>CREATE INDEX ON some_table (some_column)<\/code>, och PostgreSQL g\u00f6r det tunga arbetet att h\u00e5lla indexet aktuellt medan vi st\u00e4ndigt s\u00e4tter in, uppdaterar och tar bort v\u00e4rden. Allt fungerar automatiskt, som av magi.<\/p>\n<p><\/p>\n<p>Men indexen i PostgreSQL har ett problem \u2014 de <noindex><a rel=\"nofollow\" href=\"https:\/\/info.crunchydata.com\/blog\/checking-for-postgresql-bloat\">v\u00e4xer.<\/a><\/noindex> och tar upp on\u00f6dig plats p\u00e5 disken, medan prestandan f\u00f6r datainh\u00e4mtning och uppdatering minskar. Med \"uppsv\u00e4llning\" menar jag ineffektiv hantering av indexstrukturen. Detta kan ha \u2013 eller inte ha \u2013 att g\u00f6ra med skr\u00e4pkartor som tas bort <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-vacuum.html\">VACUUM<\/a><\/noindex> (tack f\u00f6r informationen Peter Geoghegan (<noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/petervgeoghegan\">Peter Geoghegan<\/a><\/noindex>)). Uppsv\u00e4llning av index \u00e4r s\u00e4rskilt m\u00e4rkbar i arbetsbelastningar d\u00e4r indexet aktivt \u00e4ndras.<\/p>\n<p><\/p>\n<p>PostgreSQL 12 f\u00f6rb\u00e4ttrar v\u00e4sentligt hanteringen av B-tr\u00e4d-index, och experiment med tester som TPC-C har visat att utrymmet nu anv\u00e4nds i genomsnitt 40% mindre. Nu spenderar vi mindre tid inte bara p\u00e5 att underh\u00e5lla B-tr\u00e4d-index (det vill s\u00e4ga skrivoperationer), utan \u00e4ven p\u00e5 datainh\u00e4mtning, eftersom indexen har blivit mycket mindre.<\/p>\n<p><\/p>\n<p>Applikationer som aktivt uppdaterar sina tabeller \u2013 vanligtvis OLTP-applikationer (<noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Online_transaction_processing\">behandling av transaktioner i realtid<\/a><\/noindex>) \u2013 kommer att anv\u00e4nda disken mycket mer effektivt och hantera f\u00f6rfr\u00e5gningar. Ju mer utrymme som finns p\u00e5 disken, desto mer utrymme har databasen f\u00f6r att v\u00e4xa utan att uppgradera infrastrukturen.<\/p>\n<p><\/p>\n<p>Vissa uppgraderingsstrategier kr\u00e4ver att B-tr\u00e4d-indexen byggs om f\u00f6r att dra nytta av dessa f\u00f6rdelar (till exempel, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/pgupgrade.html\">pg_upgrade<\/a><\/noindex> bygger inte om index automatiskt). I tidigare versioner av PostgreSQL ledde ombyggnation av stora index i tabeller till betydande stillest\u00e5nd, eftersom inga \u00e4ndringar kunde g\u00f6ras under den tiden. Men i PostgreSQL 12 finns det en annan fantastisk funktion: nu kan man bygga om index parallellt med kommandot <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/12\/sql-reindex.html\">REINDEX CONCURRENTLY<\/a><\/noindex>, f\u00f6r att helt undvika stillest\u00e5nd.<\/p>\n<p><\/p>\n<p>I PostgreSQL 12 finns det ocks\u00e5 andra f\u00f6rb\u00e4ttringar av indexeringsinfrastrukturen. En annan sak d\u00e4r det inte saknas magi \u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/wal-intro.html\">journal med f\u00f6rhandsinspelning<\/a><\/noindex>, \u00e4ven kallad WAL (write-ahead log). Loggen f\u00f6r f\u00f6rhandspostning registrerar varje transaktion i PostgreSQL f\u00f6r eventuella krasch- och replikationsfall. Applikationer anv\u00e4nder den f\u00f6r arkivering och <noindex><a rel=\"nofollow\" href=\"https:\/\/info.crunchydata.com\/blog\/pgbackrest-point-in-time-recovery-using-crunchy-postgresql-operator\">\u00e5terst\u00e4llning vid en viss tidpunkt<\/a><\/noindex>. Sj\u00e4lvklart skrivs loggen f\u00f6r f\u00f6rhandspostning till disken, vilket kan p\u00e5verka prestandan.<\/p>\n<p><\/p>\n<p>I PostgreSQL 12 minskade kostnaderna f\u00f6r WAL-poster som skapas av GiST-, GIN- och SP-GiST-index vid indexbyggande. Detta ger flera m\u00e4rkbara f\u00f6rdelar: WAL-posterna tar mindre plats p\u00e5 disken och data \u00e5terst\u00e4lls snabbare, till exempel under en \u00e5terst\u00e4llning efter krasch eller en tids\u00e5terst\u00e4llning. Om du anv\u00e4nder s\u00e5dana index i dina applikationer (till exempel, geospatiala applikationer som anv\u00e4nder PostGIS anv\u00e4nder mycket GiST-index), \u00e4r det ytterligare en funktion som kommer att f\u00f6rb\u00e4ttra din verksamhet avsev\u00e4rt utan n\u00e5gra anstr\u00e4ngningar fr\u00e5n din sida.<\/p>\n<p><\/p>\n<h3 id=\"sekcionirovanie--bolshe-luchshe-bystree\">Partitionering - mer, b\u00e4ttre, snabbare<\/h3>\n<p><\/p>\n<p>I PostgreSQL 10 introducerades <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/ddl-partitioning.html\">deklara partitionering<\/a><\/noindex>. I PostgreSQL 11 blev det mycket enklare att anv\u00e4nda. I PostgreSQL 12 kan du \u00e4ndra skalningen av partitioner.<\/p>\n<p><\/p>\n<p>I PostgreSQL 12 blev prestandan f\u00f6r partitionssystemet betydligt b\u00e4ttre, s\u00e4rskilt om det finns tusentals partitioner i tabellen. Till exempel, om en fr\u00e5ga ber\u00f6r bara n\u00e5gra f\u00e5 partitioner i en tabell med tusentals, kommer den att k\u00f6ras mycket snabbare. Prestandan har f\u00f6rb\u00e4ttrats inte bara f\u00f6r s\u00e5dana typer av fr\u00e5gor. Du kommer ocks\u00e5 att m\u00e4rka hur INSERT-operationer i tabeller med m\u00e5nga partitioner har blivit snabbare.<\/p>\n<p><\/p>\n<p>Att skriva data med <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/sql-copy.html\">COPY<\/a><\/noindex> \u2014 f\u00f6r \u00f6vrigt, det \u00e4r ett utm\u00e4rkt s\u00e4tt <noindex><a rel=\"nofollow\" href=\"https:\/\/info.crunchydata.com\/blog\/fast-csv-and-json-ingestion-in-postgresql-with-copy\">f\u00f6r mass\u00f6verf\u00f6ring av data<\/a><\/noindex> och h\u00e4r \u00e4r ett exempel <noindex><a rel=\"nofollow\" href=\"https:\/\/info.crunchydata.com\/blog\/fast-csv-and-json-ingestion-in-postgresql-with-copy\">p\u00e5 JSON<\/a><\/noindex> \u2014 i partitionerade tabeller i PostgreSQL 12 blev det ocks\u00e5 mer effektivt. Med COPY var det snabbt redan, och i PostgreSQL 12 g\u00e5r det verkligen snabbt.<\/p>\n<p><\/p>\n<p>Tack vare dessa f\u00f6rdelar kan PostgreSQL lagra \u00e4nnu st\u00f6rre datam\u00e4ngder, och det har blivit enklare att h\u00e4mta dem. Och inga anstr\u00e4ngningar fr\u00e5n din sida. Om din applikation har m\u00e5nga partitioner, till exempel, om den skriver tidsseriedata, kommer en enkel uppgradering v\u00e4sentligt att f\u00f6rb\u00e4ttra dess prestanda.<\/p>\n<p><\/p>\n<p>Och \u00e4ven om denna f\u00f6rb\u00e4ttring inte riktigt h\u00f6r till kategorin 'uppgraderade och jublar', kan du i PostgreSQL 12 skapa fr\u00e4mmande nycklar som refererar till partitionerade tabeller, vilket g\u00f6r att arbete med partitionering blir en ren njutning.<\/p>\n<p><\/p>\n<h3 id=\"zaprosy-with-stali-gorazdo-luchshe\">WITH-fr\u00e5gor har blivit mycket b\u00e4ttre<\/h3>\n<p><\/p>\n<p>N\u00e4r <noindex><a rel=\"nofollow\" href=\"https:\/\/git.postgresql.org\/gitweb\/?p=postgresql.git;a=commitdiff;h=608b167f9f9c4553c35bb1ec0eab9ddae643989b\">en patch f\u00f6r inbyggda generiska tabelluttryck har till\u00e4mpats<\/a><\/noindex> (\u00e4ven k\u00e4nda som CTE, \u00e4ven k\u00e4nda som WITH-fr\u00e5gor), jag har l\u00e4nge velat skriva en artikel om hur glada utvecklarna av applikationer \u00e4r med PostgreSQL <noindex><a rel=\"nofollow\" href=\"https:\/\/info.crunchydata.com\/blog\/with-queries-present-future-common-table-expressions\">. Det h\u00e4r \u00e4r en av de funktioner som kommer att snabba upp applikationen. Om du anv\u00e4nder CTE, f\u00f6rst\u00e5s.<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Jag m\u00e4rker ofta att nyb\u00f6rjare i SQL gillar att anv\u00e4nda CTE: om man skriver dem p\u00e5 ett visst s\u00e4tt k\u00e4nns det som att man skriver ett imperativt program. Personligen gillade jag att skriva om dessa fr\u00e5gor f\u00f6r att klara mig <em>utan<\/em> CTE och \u00f6ka prestandan. Nu \u00e4r allt annorlunda.<\/p>\n<p><\/p>\n<p>PostgreSQL 12 till\u00e5ter inb\u00e4ddning av en viss typ av CTE utan bieffekter (<code>V\u00c4LJ<\/code>), som endast anv\u00e4nds en g\u00e5ng mot slutet av fr\u00e5gan. Om jag skulle h\u00e5lla statistik \u00f6ver fr\u00e5gor med CTE som jag skrev om, skulle de flesta av dem hamna i den kategorin. Detta hj\u00e4lper utvecklare att skriva tydlig kod som nu ocks\u00e5 fungerar snabbt.<\/p>\n<p><\/p>\n<p>Dessutom optimerar PostgreSQL 12 SQL-exekveringen sj\u00e4lv, du beh\u00f6ver inte g\u00f6ra n\u00e5got. Och \u00e4ven om jag nu f\u00f6rmodligen inte beh\u00f6ver optimera s\u00e5dana fr\u00e5gor, \u00e4r det bra att PostgreSQL forts\u00e4tter att arbeta med optimeringarna.<\/p>\n<p><\/p>\n<h3 id=\"just-in-time-jit--teper-po-umolchaniyu\">Just-in-Time (JIT) \u2013 \u00e4r nu som standard<\/h3>\n<p><\/p>\n<p>I PostgreSQL 12-system med st\u00f6d f\u00f6r <noindex><a rel=\"nofollow\" href=\"https:\/\/llvm.org\/\">LLVM<\/a><\/noindex> JIT-kompilering \u00e4r aktiverad som standard. F\u00f6rst och fr\u00e4mst f\u00e5r du st\u00f6d f\u00f6r <noindex><a rel=\"nofollow\" href=\"https:\/\/www.postgresql.org\/docs\/current\/jit.html\">JIT<\/a><\/noindex> f\u00f6r vissa interna operationer, och f\u00f6r det andra kan fr\u00e5gor med uttryck (det enklaste exemplet \u00e4r x + y) i vallistor (som kommer efter SELECT), aggregat, uttryck med WHERE-klausuler och mer anv\u00e4nda JIT f\u00f6r att \u00f6ka prestandan.<\/p>\n<p><\/p>\n<p>Eftersom JIT \u00e4r aktiverat som standard i PostgreSQL 12, f\u00f6rb\u00e4ttras prestandan automatiskt, men jag rekommenderar att testa applikationen i PostgreSQL 11, d\u00e4r JIT just introducerades, f\u00f6r att m\u00e4ta prestandan hos fr\u00e5gorna och se om n\u00e5got beh\u00f6ver justeras.<\/p>\n<p><\/p>\n<h3 id=\"a-kak-zhe-ostalnye-novye-fichi-postgresql-12\">Men vad s\u00e4gs om de andra nya funktionerna i PostgreSQL 12?<\/h3>\n<p><\/p>\n<p>I PostgreSQL 12 finns det massor av nya h\u00e4ftiga funktioner \u2013 fr\u00e5n m\u00f6jligheten att utforska JSON-data med hj\u00e4lp av standard SQL\/JSON-v\u00e4gar till multifaktorautentisering med parameter <code>clientcert=verify-full<\/code>, genererade kolumner och mycket mer. Det r\u00e4cker f\u00f6r ett eget inl\u00e4gg.<\/p>\n<p><\/p>\n<p>Precis som PostgreSQL 10 kommer PostgreSQL 12 att \u00f6ka den \u00f6vergripande prestandan direkt efter uppgraderingen. Du kan s\u00e5klart ha din egen v\u00e4g \u2013 testa applikationen under liknande f\u00f6rh\u00e5llanden i produktionssystemet innan du aktiverar f\u00f6rb\u00e4ttringarna, som jag gjorde med PostgreSQL 10. \u00c4ven om PostgreSQL 12 redan nu \u00e4r stabilare \u00e4n jag hade f\u00f6rv\u00e4ntat mig, tveka inte att kvalitets testa applikationer innan du sl\u00e4pper dem i produktion.<\/p>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/466727\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>PostgreSQL 12, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u00ab\u043b\u0443\u0447\u0448\u0435\u0439 \u0432 \u043c\u0438\u0440\u0435 \u0440\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c \u043a\u043e\u0434\u043e\u043c\u00bb, \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443-\u0442\u0440\u043e\u0439\u043a\u0443 \u043d\u0435\u0434\u0435\u043b\u044c (\u0435\u0441\u043b\u0438 \u0432\u0441\u0435 \u043f\u043e\u0439\u0434\u0435\u0442 \u043f\u043e \u043f\u043b\u0430\u043d\u0443). \u042d\u0442\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u044e \u2014 \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0441 \u0443\u0439\u043c\u043e\u0439 \u043d\u043e\u0432\u044b\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0432\u044b\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0437 \u0432 \u0433\u043e\u0434, \u0438, \u0447\u0435\u0441\u0442\u043d\u043e \u0433\u043e\u0432\u043e\u0440\u044f, \u044d\u0442\u043e \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u0435\u0442. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0438 \u0441\u0442\u0430\u043b \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u0447\u043b\u0435\u043d\u043e\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 PostgreSQL. \u041f\u043e-\u043c\u043e\u0435\u043c\u0443, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":28500,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-37975","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.4 - aioseo.com -->\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\/sv\/blog\/administrirovanie\/apgrejd-dlya-lenivyh-kak-postgresql-12-povyshaet-proizvoditelnost\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\u0410\u043f\u0433\u0440\u0435\u0439\u0434 \u0434\u043b\u044f \u043b\u0435\u043d\u0438\u0432\u044b\u0445: \u043a\u0430\u043a PostgreSQL 12 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/apgrejd-dlya-lenivyh-kak-postgresql-12-povyshaet-proizvoditelnost\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:20:56+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:20:56+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\udd47Uppgradering f\u00f6r lata: hur PostgreSQL 12 f\u00f6rb\u00e4ttrar prestanda | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/apgrejd-dlya-lenivyh-kak-postgresql-12-povyshaet-proizvoditelnost","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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\u0410\u043f\u0433\u0440\u0435\u0439\u0434 \u0434\u043b\u044f \u043b\u0435\u043d\u0438\u0432\u044b\u0445: \u043a\u0430\u043a PostgreSQL 12 \u043f\u043e\u0432\u044b\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c | ProHoster","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/apgrejd-dlya-lenivyh-kak-postgresql-12-povyshaet-proizvoditelnost","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:20:56+00:00","article:modified_time":"2019-10-31T19:20:56+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"37975","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 19:59:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:17:22","updated":"2026-01-23 19:59:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37975","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=37975"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/37975\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/28500"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=37975"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=37975"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=37975"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}