{"id":33872,"date":"2019-10-31T21:55:09","date_gmt":"2019-10-31T18:55:09","guid":{"rendered":"https:\/\/prohoster.info\/blog\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\/"},"modified":"2019-10-31T21:55:09","modified_gmt":"2019-10-31T18:55:09","slug":"postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","status":"publish","type":"post","link":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","title":{"rendered":"PostgreSQL 11: Evolusjonen av partisjonering fra Postgres 9.6 til Postgres 11","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>God fredag til alle! Det er mindre tid igjen til kursoppstart. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/CIBR\/\">\u00abRelasjonsdatabaser\u00bb<\/a><\/noindex>, s\u00e5 i dag deler vi oversettelsen av enda et nyttig materiale om emnet.<\/p>\n<p>Under utviklingen <noindex><a rel=\"nofollow\" href=\"https:\/\/www.2ndquadrant.com\/postgresql\/2ndquadrants-passion-postgresql\/contributions-postgresql-11\/\">PostgreSQL 11<\/a><\/noindex> har det blitt utf\u00f8rt imponerende arbeid for \u00e5 forbedre tabellseksjonering. <b>Tabellseksjonering<\/b> er en funksjon som har eksistert i PostgreSQL lenge, men som, om man kan si det s\u00e5nn, i bunn og grunn ikke eksisterte f\u00f8r versjon 10, hvor den ble en sv\u00e6rt nyttig funksjon. Tidligere har vi hevdet at arv av tabeller er v\u00e5r implementering av seksjonering, og det er sant. Men denne metoden tvang deg til \u00e5 gj\u00f8re det meste av arbeidet manuelt. For eksempel, hvis du \u00f8nsket at tupler skulle settes inn i seksjoner under INSERT, m\u00e5tte du sette opp triggere for \u00e5 gj\u00f8re det for deg. Seksjonering med arv var sv\u00e6rt tregt og vanskelig \u00e5 utvikle ytterligere funksjoner p\u00e5 toppen av.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>I PostgreSQL 10 s\u00e5 vi f\u00f8dselen av \u00abdeklarativ seksjonering\u00bb \u2014 en funksjon designet for \u00e5 l\u00f8se mange problemer som var ul\u00f8selige med den gamle metoden med arv. Dette f\u00f8rte til fremveksten av et betydelig kraftigere verkt\u00f8y som lar oss dele data horisontalt!<\/p>\n<p><b>Sammenligning av funksjoner<\/b><\/p>\n<p>I PostgreSQL 11 kom det et imponerende sett med nye funksjoner som bidrar til \u00e5 \u00f8ke ytelsen og gj\u00f8re seksjonerte tabeller mer gjennomsiktige for applikasjoner.<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11: Evolusjonen av partisjonering fra Postgres 9.6 til Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/13ef675b91bb0701719c816882bd3e8b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"PostgreSQL 11: Evolusjonen av partisjonering fra Postgres 9.6 til Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/d87349281f0dc0820a064d81f80407d1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<img decoding=\"async\" alt=\"PostgreSQL 11: Evolusjonen av partisjonering fra Postgres 9.6 til Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/3bb3beeedf803f1fdbe58a858076478c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>1. Bruk av begrensende unntak<br \/>\n2. Legger til kun noder<br \/>\n3. Bare for seksjonerte tabeller, som refererer til ikke-seksjonerte<br \/>\n4. Indekser m\u00e5 inneholde alle n\u00f8kkels\u00f8ile i seksjonen<br \/>\n5. Begrensningen p\u00e5 seksjoner p\u00e5 begge sider m\u00e5 matche<\/i><\/p>\n<p><b>Ytelse<\/b><\/p>\n<p>Her har vi ogs\u00e5 gode nyheter! En ny metode for <noindex><a rel=\"nofollow\" href=\"https:\/\/www.2ndquadrant.com\/blog\/http2ndquadrant-com\/partition-elimination-postgresql-11\/%22\">fjerning av seksjoner<\/a><\/noindex>. Denne nye algoritmen kan bestemme passende seksjoner ved \u00e5 se p\u00e5 foresp\u00f8rselens betingelse <code>Den maksimale\/minimale hurtig oppfriskningen etter sletting eller blandede DML har ikke samme oppf\u00f8rsel som innsetting-tilfelle. Den sletter og beregner p\u00e5 nytt maks\/min verdiene for de ber\u00f8rte gruppene. Du m\u00e5 v\u00e6re oppmerksom p\u00e5 dens ytelseseffekt.<\/code>. Den forrige algoritmen, derimot, sjekket hver seksjon for \u00e5 avgj\u00f8re om den kunne oppfylle betingelsen <code>Den maksimale\/minimale hurtig oppfriskningen etter sletting eller blandede DML har ikke samme oppf\u00f8rsel som innsetting-tilfelle. Den sletter og beregner p\u00e5 nytt maks\/min verdiene for de ber\u00f8rte gruppene. Du m\u00e5 v\u00e6re oppmerksom p\u00e5 dens ytelseseffekt.<\/code>. Dette f\u00f8rte til en ytterligere \u00f8kning av planleggingstiden etter hvert som antallet seksjoner vokste.<\/p>\n<p>I versjon 9.6, med seksjonering ved hjelp av arv, ble ruting av tupler i en seksjon vanligvis utf\u00f8rt ved \u00e5 skrive en triggerfunksjon som inneholdt en serie IF-setninger for \u00e5 sette tuple i riktig seksjon. Disse funksjonene kunne v\u00e6re veldig trege i utf\u00f8relsen. Med deklarativ seksjonering, lagt til i versjon 10, ble dette mye raskere.<\/p>\n<p>Ved \u00e5 bruke en seksjonert tabell med 100 seksjoner, kan vi vurdere ytelsen ved innlasting av 10 millioner rader i en tabell med 1 BIGINT-kolonne og 5 INT-kolonner.<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11: Evolusjonen av partisjonering fra Postgres 9.6 til Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/02c33ba997f187890046215997a689fc.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nYtelsen til en sp\u00f8rring mot denne tabellen for \u00e5 finne en indeksert post og utf\u00f8re DML for \u00e5 manipulere \u00e9n post (ved \u00e5 bruke kun 1 prosessor):<\/p>\n<p><img decoding=\"async\" alt=\"PostgreSQL 11: Evolusjonen av partisjonering fra Postgres 9.6 til Postgres 11\" src=\"\/wp-content\/uploads\/2019\/05\/8e69519dd97c6f2e60112908418e5c97.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nHer ser vi at ytelsen til hver operasjon har \u00f8kt betydelig etter PG 9.6. Sp\u00f8rringer <code>SELECT<\/code> ser mye bedre ut, spesielt de som kan ekskludere flere seksjoner under sp\u00f8rringsplanlegging. Dette betyr at planleggeren kan hoppe over mye av arbeidet som tidligere m\u00e5tte gj\u00f8res. For eksempel bygges det ikke lenger stier for un\u00f8dvendige seksjoner.<\/p>\n<p><b>Konklusjon<\/b><\/p>\n<p>Seksjonering av tabeller begynner \u00e5 bli en sv\u00e6rt kraftig funksjon i PostgreSQL. <b>Den lar oss raskt hente data online og flytte dem offline, uten \u00e5 m\u00e5tte vente p\u00e5 at langsomme, massive DML-operasjoner skal fullf\u00f8res.<\/b>Det betyr ogs\u00e5 at relaterte data kan lagres sammen, noe som gj\u00f8r at vi kan f\u00e5 tilgang til n\u00f8dvendige data mye mer effektivt. Forbedringene som er gjort i denne versjonen ville v\u00e6rt umulige uten utviklerne, anmelderne og kommitt\u00e9medlemmene som har jobbet utrettelig med alle disse funksjonene.<br \/>\nTakk til dem alle! <b>PostgreSQL 11 ser rett og slett fantastisk ut!<\/b><\/p>\n<p>Her er en kort, men ganske interessant artikkel. Del gjerne kommentarer, og glem ikke \u00e5 registrere deg for <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/37jj\/\">\u00e5pen dag<\/a><\/noindex>, der programmet for kurset vil bli beskrevet i detalj.<br \/>\n<br \/>Kilde: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/452280\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b! \u0412\u0441\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043a\u0443\u0440\u0441\u0430 \u00ab\u0420\u0435\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0421\u0423\u0411\u0414\u00bb, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0435\u0449\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430 \u043f\u043e \u0442\u0435\u043c\u0435. \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 PostgreSQL 11 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0434\u0435\u043b\u0430\u043d\u0430 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u044f\u044e\u0449\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044e \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446. \u0421\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 \u2014 \u044d\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043b\u0430 \u0432 PostgreSQL \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0434\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u043e \u0435\u0435, \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0442\u0430\u043a \u0432\u044b\u0440\u0430\u0437\u0438\u0442\u044c\u0441\u044f, \u043f\u043e \u0441\u0443\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25538,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33872","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.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\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\/no\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\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\udd47PostgreSQL 11: \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 Postgres 9.6 \u0434\u043e Postgres 11 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11\" \/>\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:55:09+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:09+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\udd47PostgreSQL 11: Evolusjonen av seksjonering fra Postgres 9.6 til Postgres 11 | ProHoster","description":"God fredag til alle!","canonical_url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","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\udd47PostgreSQL 11: \u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0435\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0442 Postgres 9.6 \u0434\u043e Postgres 11 | ProHoster","og:description":"\u041e\u0442\u043b\u0438\u0447\u043d\u043e\u0439 \u0432\u0441\u0435\u043c \u043f\u044f\u0442\u043d\u0438\u0446\u044b!","og:url":"https:\/\/prohoster.info\/no\/blog\/administrirovanie\/postgresql-11-evolyutsiya-sektsionirovaniya-ot-postgres-9-6-do-postgres-11","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:55:09+00:00","article:modified_time":"2019-10-31T18:55:09+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33872","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 17:02:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:32:26","updated":"2026-01-21 17:02:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/33872","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=33872"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/33872\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media\/25538"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=33872"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=33872"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=33872"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}